我有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中。我希望你能理解我的问题。
答案 0 :(得分:0)
以下是与您的代码类似的工作示例
$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