Continuing the problem of converting PHP multidimensional arrays into XML data formats yesterday
First of all, thanks to yesterday's two friends: jordan102 and Xuzuning
Posts Link: http://bbs.csdn.net/topics/390609227
Their two-bit method of testing is indeed feasible, indeed.
But in the course of the development of the project, it was found that the project was so perverted that there was such a situation
PHP Array:
"Auth" = = Array (
"User" = "user001",
"Password" = "pass001",
"Context" =
),
"Task" = = Array (
"Code" = "0101",
"Item" =>array (
"title" = "abc",
"Web" =>array (
"Name" = "Baidu.com",
"IP" = "1.2.3.4",
),
"Web" =>array (
"Name" = "Sina.com",
"IP" = "1.1.1.1",
),
"Confirm Order" = "1",
),
"Reply_to" = "info@xxx.com",
),
);
Note that underneath the item node, there are two child nodes of the web, in fact there may be several web sub-nodes, typically around 2-4
Now the converter code is as follows:
$xml = simplexml_load_string ("
);
Create ($ar, $xml);
$xmlData = $xml->savexml ();
Echo $xmlData;
function Create ($ar, $xml) {
foreach ($ar as $k = = $v) {
if (Is_array ($v)) {
$x = $xml->addchild ($k);
Create ($v, $x);
}else $xml->addchild ($k, $v);
}
}
This code is relatively efficient, but in the encounter of the same name node, the filter is only the last node, so the result of the final output becomes, notice that the Web name value of baidu.com is missing.
The output turns into:
user001
pass001
1
0101
Abc
Sina.com
1.1.1.1
1
Info@xxx.com
The conversion of the function, I changed and changed, or have been unable to output the full data, headache ...
What is the best way for you to ask your predecessors?
Share to:
------Solution--------------------
Your array does not exist, and it is not possible to have two identical key names in the same dimension array.
------Solution--------------------
The question is what is the entry data? Text? Json? It's definitely not the array you showed.
Ready-made Array2xml, Json2xml Class A lot of AH
------Solution--------------------
Your problem now is not the problem with the array transformation XML, but the problem when the array is generated.
Or that an array in PHP cannot represent your most primitive data (at least not in the way you're currently using it)
So please post the most original data, change the way it is expressed, to solve the problem.
------Solution--------------------
Not the other person's entrance, is your entrance, how did your array come from? Can't have the same key
------Solution--------------------
You're not as complicated as XML, it doesn't involve the escaping of Chinese and special characters.
If you are unfamiliar with XML, it might be easier to generate XML by looping through string concatenation.
------Solution--------------------
Reference:
Quote: Reference:
Not the other person's entrance, is your entrance, how did your array come from? Can't have the same key
Well, after the advice of your predecessors, it is clear that I have already defined the same key-value name when creating the PHP array and assigning values, causing problems with the array.
I now find a more stupid solution, is to define a text variable $xmltext, the other request to send the text of the XML data copied, and then use the replacement of several variables in the text, replaced, directly post the past, do not need to define the array, and then converted to XML.
This is not stupid, in fact, is the PHP template approach, do not forget the output header->text/xml