繁体   English   中英

在PHP中读取二级XML

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM