XML XPath问题

时间:2011-08-07 17:00:19

标签: php xml xpath

我是Xpath的新手,今天几乎只是第一次看到它,并且我在XPath中遇到了一些问题,没有加载XML中定义的图像。

到目前为止,我有:

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

正如你所看到我定义了2个图像,在imagehome1中有1个,在imagehomebot中有1个,但是我的XPath代码只显示来自imagehomebot的图像.....我不知道为什么。

我的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>

非常感谢所有帮助。 感谢

编辑:只是快速查看我的代码,我想我知道为什么,该死的复制并粘贴哈哈......

1 个答案:

答案 0 :(得分:0)

看起来你想要处理包含imge节点的所有节点。

尝试

'/ content / page / image / * [imge]'

使用一个xpath获取imagehome1,imagehome2和imagehomebot。如果要将节点限制为具有实际字符串的节点,则可能类似于

/内容/页/图像/ * [IMGE /文本()]

“[]”中的表达式是“谓词”,它指定与前面的“上下文”节点相关的标准(“*”),该节点表示获取图像的所有子节点。 (我这样做是因为他们的名字不同。)