PHP使用XmlExtractor将XML解析为数组-Bug
我使用PHP将XML文件解析为数组 不幸的是,当涉及到重复的数组元素时,有一个bug。下面是输入Earth.xml的示例:PHP使用XmlExtractor将XML解析为数组-Bug,php,xml,parsing,xml-parsing,html-parsing,Php,Xml,Parsing,Xml Parsing,Html Parsing,我使用PHP将XML文件解析为数组 不幸的是,当涉及到重复的数组元素时,有一个bug。下面是输入Earth.xml的示例: <earth> <people> <person> <name id = "1"> <first>Paul</first> <last>Warelis</last>
<earth>
<people>
<person>
<name id = "1">
<first>Paul</first>
<last>Warelis</last>
</name>
<name id = "2">
<first>George</first>
<last>Stein</last>
</name>
<gender>Male</gender>
<skill>Javascript</skill>
<skill>PHP</skill>
<skill>Beer</skill>
</person>
</people>
</earth>
XmlExtractor的作者向我确认这是一个bug。然而,不幸的是,该项目已不再维持,我还没有能够解决这个问题,我自己到目前为止。是否有人能够对此进行调查并找出问题的根源
作者已确认他将把解决方案合并到包中,以便其他人也能从中受益
谢谢!
pancid为什么一个人有两个名字和姓氏?对于另一个人,您可以在XML文件中添加另一个“person”标记,如下所示:
保罗
瓦雷利斯
男性的
Javascript
PHP
啤酒
乔治
斯坦
男性的
安格拉斯
PHP
啤酒
从逻辑上讲,你是对的。然而,所提供的xml只是一个示例来说明代码中的错误。不管元素的名称是什么,问题总是一样的。解决这个问题的唯一方法是将XmlExtractor的源代码固定在
$source = new XmlExtractor("earth", $file);
foreach ($source as $people) {
$result = $people->export(true);
}
echo '<pre>';
print_r($result);
echo '</pre>';
Array
(
[people] => Array
(
[person] => Array
(
[name] => Array
(
[id] => 1
[first] => Paul
[last] => Warelis
[name] => Array
(
[id] => 2
[first] => George
[last] => Stein
)
)
[gender] => Male
[skill] => Array
(
[0] => Javascript
[1] => PHP
[2] => Beer
)
)
)
)
<earth>
<people>
<person>
<name id = "1">
<first>Paul</first>
<last>Warelis</last>
</name>
<gender>Male</gender>
<skill>Javascript</skill>
<skill>PHP</skill>
<skill>Beer</skill>
</person>
<person>
<name id = "2">
<first>George</first>
<last>Stein</last>
</name>
<gender>Male</gender>
<skill>AngularJS</skill>
<skill>PHP</skill>
<skill>Beer</skill>
</person>
</people>
</earth>