我一直在寻找这个,但似乎找不到答案。我有一个相当复杂的XML文档,我需要用PHP解析。XML 的结构如下所示:
<root>
<main id="1"> *some data*
<sub id="1"> *some data*
<sub id="2"> *some data*
<sub id="3"> *some data*
<sub id="4"> *some data* </sub>
<sub id="5"> *some data* </sub>
</sub>
</sub>
</sub>
</main>
</root>
将此文档解析为具有相同结构的多维数组非常重要。
但是,有一个问题。没有办法知道第一个标签里面有多少个子关卡,如果有的话。本文档由另一个系统动态创建,每个主标签的子结构不同。
我尝试使用SimpleXMLElement,但它只解析了第一级,即主标签和第一个子标签之间的数据。
尝试simplexml_load_string()
:
<?php
$string = <<<XML
<?xml version='1.0'?>
<document>
<title>Forty What?</title>
<from>Joe</from>
<to>Jane</to>
<body>
I know that's the answer -- but what's the question?
</body>
</document>
XML;
$xml = simplexml_load_string($string);
print_r($xml);
不管你有多少个关卡或结构是什么......只要它是有效的,你就会得到一个你可以使用的对象。