Php 根据deeplink属性选择一个xml对象
我正在开发一个使用xml文件在屏幕上打印的页面。现在,我只需要将具有起始url的对象打印到属性中,如下所示:Php 根据deeplink属性选择一个xml对象,php,xml,xml-parsing,simplexml,filtering,Php,Xml,Xml Parsing,Simplexml,Filtering,我正在开发一个使用xml文件在屏幕上打印的页面。现在,我只需要将具有起始url的对象打印到属性中,如下所示: <product zupid="d490dd40f6dbaf238f28b57abad92fbf"> <deepLink>http://ad.zanox.com/ppc/?28132512C86846042&ULP=[[offerte-viaggi/vacanze/sconti-triton-villas-residence-hotel-
<product zupid="d490dd40f6dbaf238f28b57abad92fbf">
<deepLink>http://ad.zanox.com/ppc/?28132512C86846042&ULP=[[offerte-viaggi/vacanze/sconti-triton-villas-residence-hotel-calabria.html]]</deepLink>
</product>
http://ad.zanox.com/ppc/?28132512C86846042&ULP=[[offerte viaggi/vacanze/sconti triton villas residence hotel calabria.html]]
现在我正在解析所有这些,因为我使用了以下函数:
for ($i=$offset; $i<$limit+$offset; $i++) {
$article=$xml->product[$i];
$link = $article->deepLink;
echo "<a target='_blank' href='$link'>Go to link</a>";
}
for($i=$offset;$iproduct[$i];
$link=$article->deepLink;
回声“;
}
如何仅选择具有该部分属性/url的对象?SimpleXMLElement::xpath()方法允许您使用xpath表达式获取元素数组:
$documentElement = simplexml_load_string($xml);
$offset = 1;
$count = 2;
$expression = '//product
[starts-with(deepLink, "http://ad.zanox.com/")]
[position() >= '.$offset.' and position() < '.($offset + $count).']
';
foreach ($documentElement->xpath($expression) as $product) {
var_dump((string)$product->deepLink);
}
$documentElement=simplexml\u load\u字符串($xml);
$offset=1;
$count=2;
$expression='//产品
[以(deepLink)开头,”http://ad.zanox.com/")]
[position()>='.$offset.'和position()<'.($offset+$count)。']
';
foreach($documentElement->xpath($expression)作为$product){
变量转储((字符串)$product->deepLink);
}
演示:
关于表达式:
选择模具文档中的所有产品元素
//产品
…如果作为文本的deepLink元素以给定字符串开头
//产品
[以(deepLink)开头,”http://ad.zanox.com/”)
使用最小值和最大值限制找到的节点列表
//产品
[以(deepLink)开头,”http://ad.zanox.com/")]
[position()>=1和position()<3
]`
提示:Xpath中的位置以1开头,而不是以0开头。谢谢您的帮助。我的问题是只使用这段url->但在更改示例后它就不起作用了。为什么?另一个问题是如何加载外部xml文件而不是在同一文件中编写的xml?如果我使用此->$documentElement=new simplexmlement('testing.xml');不加载任何内容。为什么?请在backticks中设置url示例,否则将对其进行格式化。对于使用SimpleXML从文件加载xml,可以使用。请小心在url中转义。它在xml/HTML中是&;
,但在Xpath中只是&
(解析器解码实体)。