这是我的XML文件的一部分
<item>
<title>The product</title>
<description>Product description</description>
<oldprice>350</oldprice>
<price>250</price>
<category>KIDS DISCOUNT</category>
<link>page.htm</link>
<img>product.jpg</img>
</item>
如果我想要产品折扣,可以的:
<?php
$xml = simplexml_load_file('file.xml');
$items = $xml->xpath('//item/category[contains(.,"DISCOUNT")]/.. ');
foreach($items as $item){
echo '<p>...</p>';
}
?>
如果我希望产品数量少于300,可以:
<?php
$xml = simplexml_load_file('file.xml');
$items = $xml->xpath('//item/price[.<300]/.. ');
foreach($items as $item){
echo '<p>...</p>';
?>
但是,如果我两个都想要,我就不能...我尝试了这个,但这是错误的:
<?php
$xml = simplexml_load_file('file.xml');
$items = $xml->xpath('//item/price[.<300] [//item/category[contains(.,"DISCOUNT")]]/.. ');
foreach($items as $item){
echo '<p>...</p>';
?>
有人可以帮助我吗?
最佳答案
要获取价格低于300或类别包含文本“ DISCOUNT”的item
:
//item[category[contains(.,"DISCOUNT")] or price[. < 300]]
如果一个
item
始终最多具有一个category
和一个price
,则上述表达式可以进一步简化为://item[contains(category,"DISCOUNT") or price < 300]
如果要选择
item
满足这两个条件,则只需将or
替换为and
。
关于php - 基于2个子元素选择元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40833476/