各位好,我有一个  test.xml文件,内容如下<?xml version="1.0" encoding="UTF-8"?>
<main version='2'>
<item IsFolder="1" name="folder1" addtime="2010-02-05 10:12:48">                         //目标1
<item IsFolder="0" name="e1" addtime="2010-02-05 10:11:58">content1</item>
<item IsFolder="0" name="e2" addtime="2010-08-18 08:59:41">content2</item>
<item IsFolder="0" name="e3" addtime="2010-09-27 00:24:25">content3</item>
</item>
<item IsFolder="1" name="folder2" addtime="2010-03-21 17:44:19">                        //目标2
<item IsFolder="0" name="e1" addtime="2010-03-21 17:44:19">content1</item>
<item IsFolder="0" name="e2" addtime="2010-03-21 17:44:19">content2</item>
<item IsFolder="0" name="e3" addtime="2010-03-21 17:44:19">content3</item>
<item IsFolder="0" name="e4" addtime="2010-03-21 17:44:19">content4</item>
<item IsFolder="0" name="e5" addtime="2010-03-21 17:44:19">content5</item>
<item IsFolder="0" name="e6" addtime="2010-03-21 17:44:19">content6</item>
<item IsFolder="0" name="e7" addtime="2010-03-31 08:42:57">content7</item>
</item>
<item IsFolder="0" name="f1" addtime="2010-03-21 17:44:19">contentf1</item>           //目标3
<item IsFolder="0" name="f2" addtime="2010-03-31 08:42:57">contentf2</item>           //目标4
</main>
通过以下语句可以获得相关信息: $doc->load('test.xml');
$main = $doc->getElementsByTagName("main")->item(0);
$itemiter = $main->getElementsByTagName("item");但是,$itemiter嵌套获取了所有的item元素,有没有什么方法可以至获取一层数据的,及不要嵌套。即只需要“目标1,2,3,4”这四个元素的就够了。
望赐教。谢谢。

解决方案 »

  1.   

    这个比较麻烦,除非给你的xml节点设置ID,或者改变子节点的Tag Name和父节点区分开
      

  2.   

    暂时发现使用  $xml = simplexml_load_file() and  $xml->children() sounds good ,trying.
      

  3.   


     $doc->load('test.xml');
    $main = $doc->getElementsByTagName("main");
    foreach($main as  $ma){
    $test=$ma->getElementsByTagName('test')->item(0).nodeValue;
    }
      

  4.   

    $dom = new DOMDocument();
    $xml = <<<xml
    <main version='2'>
        <item IsFolder="1" name="folder1" addtime="2010-02-05 10:12:48">                        
            <item IsFolder="0" name="e1" addtime="2010-02-05 10:11:58">content1</item>
            <item IsFolder="0" name="e2" addtime="2010-08-18 08:59:41">content2</item>
            <item IsFolder="0" name="e3" addtime="2010-09-27 00:24:25">content3</item>
        </item>
        <item IsFolder="1" name="folder2" addtime="2010-03-21 17:44:19">                        
            <item IsFolder="0" name="e1" addtime="2010-03-21 17:44:19">content1</item>
            <item IsFolder="0" name="e2" addtime="2010-03-21 17:44:19">content2</item>
            <item IsFolder="0" name="e3" addtime="2010-03-21 17:44:19">content3</item>
            <item IsFolder="0" name="e4" addtime="2010-03-21 17:44:19">content4</item>
            <item IsFolder="0" name="e5" addtime="2010-03-21 17:44:19">content5</item>
            <item IsFolder="0" name="e6" addtime="2010-03-21 17:44:19">content6</item>
            <item IsFolder="0" name="e7" addtime="2010-03-31 08:42:57">content7</item>
        </item>    
        <item IsFolder="0" name="f1" addtime="2010-03-21 17:44:19">contentf1</item>           
        <item IsFolder="0" name="f2" addtime="2010-03-31 08:42:57">contentf2</item>           
    </main>
    xml;
    $dom->loadXML($xml);$xpath = new DOMXPath($dom);$items = $xpath->query("//main/item");foreach($items as $item)
    {
    echo $item->getAttribute("name")."<br/>";
    }