2011-11-08 21 views
0

phpを使用してこれらのxml要素を取得する最も効率的な方法ですか?長すぎるわけではありませんが、3つのネストされたループはちょっと重いようで、ちょうどいい気分ではありません。ここで効率的なxmlのPHPでの解析

は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) 

はトッド

// 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/>"; 

     } 
    } 
} 

EDIT、非常に多くの をありがとう

1

一つだけ<ページ>タグと1個の<sliderImages>タグがある場合は、あなたが行うことができます:

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

ありがとうございました。これは私が想像していたものです。私はAhmedの答えをより効率的に、より少ない線などを選んだので、私はこれが「従う」方が簡単だと思います。 – maddogandnoriko

関連する問題