[英]Reading two level xml in php
我有这样的xml文件:
<DATA>
<DATAITEM>
<id>0001</id>
<name>Chair</name>
<price>400</price>
</DATAITEM>
<DATAITEM>
<id>0002</id>
<name>Table</name>
<price>1200</price>
</DATAITEM>
</DATA>
和我有这个PHP脚本:
while($row = mysql_fetch_array($result)){
foreach($xml_file->DATA as $xml){
$value = htmlspecialchars($xml->DATAITEM->id);
}
}
问题是,在循环的每个步骤中,变量值中只保存了xml文件的第一项。 这是合乎逻辑的,因为只有xml文件的第一项具有以DATA开头的路径,而第二项则没有。 但是我不知道如何将xml文件的第二项也保存到变量$ value中。 希望您能理解我的问题。
这是一个与您的代码相似的工作示例
$xml = "<DATA>
<DATAITEM>
<id>0001</id>
<name>Chair</name>
<price>400</price>
</DATAITEM>
<DATAITEM>
<id>0002</id>
<name>Table</name>
<price>1200</price>
</DATAITEM>
</DATA>";
$x = new SimpleXMLElement($xml);
foreach ($x->DATAITEM as $item) {
$value = $item->id;
}
正如Quixrick在注释中指出的那样,每次循环迭代时,$ value变量都会被覆盖。 您可以创建一个数组并将id值存储为该数组中的元素:
$value = array();
foreach ($x->DATAITEM as $item) {
$value[] = $item->id;
}
// do something with $value, an array containing all of the id values
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.