Hi all I want to write a function that parses a (theoretically) unknown XML data structure into an equivalent PHP array.
İşte benim örnek XML:
<?xml version="1.0" encoding="UTF-8"?>
<content>
<title>Sample Text</title>
<introduction>
<paragraph>This is some rudimentary text</paragraph>
</introduction>
<description>
<paragraph>Here is some more text</paragraph>
<paragraph>Even MORE text</paragraph>
<sub_section>
<sub_para>This is a smaller, sub paragraph</sub_para>
<sub_para>This is another smaller, sub paragraph</sub_para>
</sub_section>
</description>
</content>
Ben devarticles Bu Yıl yineleme işlevi değiştirilmiştir:
$data = 'path/to/xmldoc.xml';
$xmlDoc = new DOMDocument(); #create a DOM element
$xmlDoc->load( $data ); #load data into the element
$xmlRoot = $xmlDoc->firstChild; #establish root
function xml2array($node)
{
if ($node->hasChildNodes())
{
$subNodes = $node->childNodes;
foreach ($subNodes as $subNode)
{
#filter node types
if (($subNode->nodeType != 3) || (($subNode->nodeType == 3)))
{
$arraydata[$subNode->nodeName]=$subNode->nodeValue;
}
xml2array($subNode);
}
}
return $arraydata;
}
//The getNodesInfo function call
$xmlarray = xml2array($xmlRoot);
// print the output - with a little bit of formatting for ease of use...
foreach($xmlarray as $xkey)
{
echo"$xkey<br/><br/>";
}
(Ben ideal tuşlara kendi menşeli düğümleri olarak aynı isimleri vermek istiyorum çünkü) Şimdi, çünkü diziye elemanları geçen kulüpler şekilde bir düğüm adı paylaşan unsurları üzerine yazarak ediyorum. Benim özyineleme büyük değildir ... Ancak, parantez boş olsa bile - düğümler ikinci kademe hala (açıklama düğümünün metin) ilk sıra values olarak geliyor.
Herkes ben daha iyi inşa nasıl herhangi bir fikir var mı?