php xmlreader获取所有子节点

时间:2017-08-03 14:34:26

标签: php xml xmlreader

我有一个php脚本使用xmlreader来读取xml文件,然后将数据传递给我的数据库,这一切都正常。我虽然在努力拍摄这些照片。我只能弄清楚如何获得每个属性的第一张图片。这是一个xml的样本

 <properties>
    <Property>
    <propertyid>17229-122</propertyid>
    <lastUpdateDate>2017-08-02</lastUpdateDate>
    <category>Residential For Sale</category>
    <images>
      <image number="1">
         <image>domain.com/imagefile1212.jpg</image>
         <alttext/>
      </image>
      <image number="2">
         <image>domain.com/imagefile12dfs2.jpg</image>
         <alttext/>
      </image>
      <image number="3">
         <image>domain.com/imagefile1212.jpg</image>
         <alttext/>
      </image>
    </images>

我的php看起来像这样

$theFeed = "locationofthexmlfile.xml";

$reader = new XMLReader();
$reader->open($theFeed);


while($reader->read()) {

    if ($reader->nodeType == XMLReader::ELEMENT && $reader->name == 'Property') {
        $propCount++;
        // Get children of property
        $doc = new DOMDocument();
        $xml = simplexml_import_dom($doc->importNode($reader->expand(), true));
        #### get the data


        $ref = $xml->propertyid; // this works fine
        $img1 = $xml->images->image->image; /// this gets the first image

         ?????? how to I get all the other images like $img2,$img3 etc  

        }
}

我想我的问题是如何获取图像节点的所有子节点?但我不能把它当作我们的。或者我应该通过查找atrribute number ='1'等来定位每个图像。

非常感谢任何帮助或指示

1 个答案:

答案 0 :(得分:0)

我建议使用“children()”来访问所有节点。

例如:

$Img = $xml->Images->children();

$Img = $xml->Images->children()->children();

(取决于嵌套数组的深度)

之后,您可以轻松地循环使用“for each” 或者通过

为每个变量赋值
$Img1 = $Img[0];
$Img2 = $Img[1];
$Img3 = $Img[2];

这是你在寻找什么? :)