我正在使用XmlExtractor将XML文件解析为PHP中的数组。
不幸的是,重复数组元素存在一个错误。这是输入Earth.xml的示例:
<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>
有两个名称元素(一个用&#34; id = 1&#39;&#34;另一个用&#34; id = 2&#34;)。我想将整个XML转换为数组。这是代码:
$source = new XmlExtractor("earth", $file);
foreach ($source as $people) {
$result = $people->export(true);
}
echo '<pre>';
print_r($result);
echo '</pre>';
但是,在这种情况下,XmlExtractor会将name元素改为&#34; id = 2&#34;成为名字元素的子元素。这是输出:
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
)
)
)
)
XmlExtractor的作者向我确认这是一个错误。然而,遗憾的是该项目已不再维护,到目前为止我自己无法解决问题。有人能够调查这个并找出问题的根源吗?
作者已经确认他会将解决方案合并到包中,以便其他人也可以受益。
谢谢! pancid
答案 0 :(得分:0)
为什么一个人有两个名字和姓氏?对于另一个人,您可以在XML文件中添加另一个“person”标记,如下所示:
<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>