php和xml,一种更好的方式来读取所有节点

时间:2013-06-27 18:11:34

标签: php xml

我有这个xml,我找不到用PHP读取所有这些数据的方法。我试过这么简单:

$xmlDoc->load("data/xml/page.xml");

所有其余的,但在某种程度上,我找不到一种方法来读取图库的名称(在此xml中)和图像的url /属性

<DOCUMENT>  <galleries_group>
<GROUP id="main_gallery_group">
  <DATA id="category_name">
    <CONTENT><![CDATA[Black & White]]></CONTENT>
  </DATA>
  <GROUP id="sub_gallery_group">
    <DATA id="gallery_name">
      <CONTENT><![CDATA[WOMENS]]></CONTENT>
    </DATA>
    <GROUP id="sub_gallery_image">
      <DATA id="gallery_thumb">
        <CONTENT>
          <SRC width="277" height="366">images/black_white/005_th.jpg</SRC>
        </CONTENT>
      </DATA>
      <DATA id="gallery_image">
        <CONTENT>
          <SRC width="817" height="1080">images/black_white/005.jpg</SRC>
        </CONTENT> </DATA>
    </GROUP>
    <GROUP id="sub_gallery_image">
      <DATA id="gallery_thumb">
        <CONTENT>
          <SRC width="515" height="366">images/black_white/006_th.jpg</SRC>
        </CONTENT>
      </DATA>
      <DATA id="gallery_image">
        <CONTENT>
          <SRC width="1521" height="1080">images/black_white/006.jpg</SRC>
        </CONTENT>
      </DATA>
    </GROUP>
  </GROUP><GROUP id="main_gallery_group">
  <DATA id="category_name">
    <CONTENT><![CDATA[Gallery ..n]]></CONTENT>
  </DATA>
  <GROUP id="sub_gallery_group">
    <DATA id="gallery_name">
      <CONTENT><![CDATA[GROUP 1]]></CONTENT>
    </DATA>
    <GROUP id="sub_gallery_image">
      <DATA id="gallery_thumb">
        <CONTENT>
          <SRC width="484" height="366">images/gallery/01_th.jpg</SRC>
        </CONTENT>
      </DATA>
      <DATA id="gallery_image">
        <CONTENT>
          <SRC width="1429" height="1080">images/gallery/01.jpg</SRC>
        </CONTENT>
      </DATA>
    </GROUP> 
    <GROUP id="sub_gallery_image">
      <DATA id="gallery_thumb">
        <CONTENT>
          <SRC width="399" height="366">images/gallery/02_th.jpg</SRC>
        </CONTENT>
      </DATA>
      <DATA id="gallery_image">
        <CONTENT>
          <SRC width="981" height="900">images/gallery/02.jpg</SRC>
        </CONTENT>
      </DATA>
    </GROUP>
    </GROUP>
  <GROUP id="sub_gallery_group">
    <DATA id="gallery_name">
      <CONTENT><![CDATA[GROUP N]]></CONTENT>
    </DATA><GROUP id="sub_gallery_image">
      <DATA id="gallery_thumb">
        <CONTENT>
          <SRC width="483" height="366">images/gallery/09_th.jpg</SRC>
        </CONTENT>
      </DATA>
      <DATA id="gallery_image">
        <CONTENT>
          <SRC width="1065" height="600">images/gallery/09.jpg</SRC>
        </CONTENT>
      </DATA>
    </GROUP>
    <GROUP id="sub_gallery_image">
      <DATA id="gallery_thumb">
        <CONTENT>
          <SRC width="235" height="366">images/gallery/10_th.jpg</SRC>
        </CONTENT>
      </DATA>
      <DATA id="gallery_image">
        <CONTENT>
          <SRC width="1920" height="1080">images/gallery/10.jpg</SRC>
        </CONTENT>
      </DATA>
    </GROUP>
   </GROUP> 
  </GROUP>     
</GROUP>   <GROUP id="text_pages_group">
<GROUP id="text_page_group">
  <DATA id="text_page_name">
    <CONTENT><![CDATA[About]]></CONTENT>
  </DATA>
  <DATA id="text_page_text">
    <CONTENT><![CDATA[text12]]></CONTENT>
  </DATA>
</GROUP></GROUP><GROUP id="text_pages_group"><GROUP id="text_page_group">
  <DATA id="text_page_name">
    <CONTENT><![CDATA[Contact]]></CONTENT>
  </DATA>
  <DATA id="text_page_text">
    <CONTENT><![CDATA[text22]]></CONTENT>
  </DATA>
</GROUP></GROUP></DOCUMENT>

当然这是一个小的xml(仅作为示例),但完整的一个具有相同的格式类型,任何帮助?

1 个答案:

答案 0 :(得分:0)

您可能想尝试这样的事情并根据需要调整XPath。

<?php
$xmlDoc = simplexml_load_file('data/xml/page.xml');
$result = $xmlDoc->xpath('/DOCUMENT//GROUP/DATA/CONTENT');
while (list(, $node) = each($result)) {
    echo $node;
}
?>

但请注意,因为您最初发布的XML格式不正确。第1行中的<galleries_group>要么未正确关闭,要么完全可有可无。