2011-11-08 77 views
0

这是最有效的方式来检索这些XML元素使用PHP?它不是太长,但三个嵌套循环似乎有点重量,只是感觉不对。高效解析XML与PHP

非常感谢你, 托德

// get the existing xml file 
$url = '../../page_xml/index.xml'; 
$xml = simplexml_load_file($url); // == Root tag 

// get the sliderImages node 
foreach($xml->Page as $page){ 
    foreach($page->sliderImages as $sliderImages){ 
     foreach($sliderImages->sliderImage as $sliderImage){ 
      echo "<strong>Title:</strong> ".$sliderImage."<br/>"; 

     } 
    } 
} 

编辑:

这里是XML:

<?xml version="1.0" encoding="utf-8" ?> 
<Root type="content"> 
    <Page> 
    <hMenuHighlight>home</hMenuHighlight> 
    <pageName>Home</pageName> 

    <sliderImages> 
     <sliderImage>images/home_slider/paper_bag.jpg</sliderImage> 
     <sliderImage>images/home_slider/red_box.jpg</sliderImage> 
     <sliderImage>images/home_slider/cubes.jpg</sliderImage> 
     <sliderImage>images/home_slider/gift_boxes.jpg</sliderImage>   
    </sliderImages> 


    <pageText> 
    <![CDATA[ 
     <h1>Welcome to myShopName</h1> 

     <!-- Start SLIDER IMAGES --> 
     <div id="slideshow"> 
      <!--##mySlideshowImages--> 
     </div> 
     <!-- End SLIDER IMAGES --> 

     <p>Puzzle Logo image provided by <a href="http://www.logoease.com">Logoease</a>.</p> 
     <p>Paper bag image provided by <a href="http://www.freedigitalphotos.net/images/view_photog.php?photogid=1012">Felixco, Inc./FreeDigitalPhotos.net</a>.</p> 
     <p>Red Box image provided by <a href="http://www.freedigitalphotos.net/images/view_photog.php?photogid=1058">Arvind Balaraman/FreeDigitalPhotos.net</a>.</p> 
     <p>Cubes image provided by <a href="http://www.freedigitalphotos.net/images/view_photog.php?photogid=1152">jscreationzs/FreeDigitalPhotos.net</a></p> 
     <p>Gift boxes image provided by <a href="http://www.freedigitalphotos.net/images/view_photog.php?photogid=1152">jscreationzs/FreeDigitalPhotos.net</a></p> 

     <p>Lorem ipsum dolor.</p> 

    ]]> 
    </pageText> 
    </Page> 
</Root> 
+1

你能后的'XML'的样本? 3个嵌套循环看起来很庞大。 – Mob

+1

xpath帮助你 – legiero

+0

它体积庞大,xml需要“深入”才能使用我正在使用的几个附加组件。 – maddogandnoriko

回答

1

由于simplexml_load_file返回一个对象,你可以这样做:

foreach ($xml->Page->sliderImages->sliderImage as $sliderImage) 
1

如果只有一个<页>标签和一个<sliderImages>标签,那么你可以做:

$si_list = $xml->Page->sliderImages; 
foreach($si_list as $si) 
    echo "<strong>Title:</strong> " . $si . "<br/>"; 
+0

谢谢你的回答。这是我所设想的。我选择艾哈迈德的答案是因为它效率更高,线条更少等。我认为这个更容易“跟随”。 – maddogandnoriko