2011-08-07 8 views
0

私はXpathを初めて使っていますが、実際にはそれを最初に見ていて、XMLで定義されたイメージを読み込まないXPathにいくつかの問題があります。XML XPathの問題

これまでのところ、私が持っている:あなたは、私がimagehomebotに2枚の画像、imagehome1中1〜1を定義しています見ることができるように、しかし、私のXPathコードのみimagehomebotから画像を表示する

<page name = "home"><br /> 
<image> 
     <imagehome1> 
      <imge>resp.jpg</imge><br /> 
      <class>right</class> 
     </imagehome1> 
     <imagehome2> 
      <imge></imge><br /> 
      <class>right</class> 
     </imagehome2> 
     <imagehomebot> 
      <imge>cfr.png</imge><br /> 
      <class>bottom</class> 
     </imagehomebot> 
    </image> 
</page> 

.....となぜ私は分かりません。

私のPHPのXPathコードは次のとおりです。

<? 
       $nodes = $dom->xpath('/content/page/image/imagehome1'); 
       if (count($nodes) > 0) { 
        if(!(string)$nodes[0]->imge){ 
         $class = "";} 
        else{ 
        $class3 = (string)$nodes[0]->class; 
        $img3 = (string)$nodes[0]->imge;} 
       } 
      ?> 
    <div class="<? echo $class ?>"> 
     <img src="imgs/<? echo $img1 ?>" /> 
    </div> 

    <? 
       $nodes = $dom->xpath('/content/page/image/imagehome2'); 
       if (count($nodes) > 0) { 
        if(!(string)$nodes[0]->imge){ 
         $class = "";} 
        else{ 
        $class3 = (string)$nodes[0]->class; 
        $img3 = (string)$nodes[0]->imge;} 
       } 
      ?> 

    <div class="<? echo $class ?>"> 
     <img src="imgs/<? echo $img2 ?>" /> 
    </div> 

    </div> 


    <div id="box2"> 

    <? 
       $nodes = $dom->xpath('/content/page/image/imagehomebot'); 
       if (count($nodes) > 0) { 
        if(!(string)$nodes[0]->imge){ 
         $class = "";} 
        else{ 
        $class3 = (string)$nodes[0]->class; 
        $img3 = (string)$nodes[0]->imge;} 
       } 
      ?> 

<div class="<? echo $class3 ?>"> 
     <img src="imgs/<? echo $img3 ?>" /> 
    </div> 

すべてのヘルプははるかに高く評価されます。 おかげ

EDIT:あなたが同じノードIMGEを含むすべてのノードを処理したいようにちょうど私のコードの上に別の簡単に見ていたし、私はなぜ知っていると思う、気コピーおよび笑ペースト...

+0

これらのイメージはすべて存在しますか? HTML出力はどのように見えますか? – GolezTrol

+0

実際にimagehomebotイメージを表示するコードはどこですか? – GolezTrol

+0

これはおそらく '/ imgs'フォルダの後ろに '/'がありませんが、今は魔法のように現れているので、あなたの問題は解決されるでしょう。 :) – GolezTrol

答えて

0

に見えます。

'/コンテンツ/ページ/画像/ * [IMGE]'

1つのXPathでimagehome1、imagehome2とimagehomebotを取得してください。あなたが実際の文字列を持つものにノードを制限したい場合は、「[]」であるに表現

/コンテンツ/ページ/画像/ * [IMGE /テキスト()]

のようなものかもしれませんイメージのすべての子ノードを取得すると言う直前の "コンテキスト"ノード( "*")に関する基準を指定する "述語"。 (私は違った名前が付けられているのでそうしました)