我是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>
非常感谢所有帮助。 感谢
编辑:只是快速查看我的代码,我想我知道为什么,该死的复制并粘贴哈哈......答案 0 :(得分:0)
看起来你想要处理包含imge节点的所有节点。
尝试
'/ content / page / image / * [imge]'
使用一个xpath获取imagehome1,imagehome2和imagehomebot。如果要将节点限制为具有实际字符串的节点,则可能类似于
/内容/页/图像/ * [IMGE /文本()]
“[]”中的表达式是“谓词”,它指定与前面的“上下文”节点相关的标准(“*”),该节点表示获取图像的所有子节点。 (我这样做是因为他们的名字不同。)