匹配上的PHP XML文件筛选器
我在工作上花了很多时间 我要做的是按城市(本例中为市场)过滤xml文件 这是xml数据匹配上的PHP XML文件筛选器,php,xml,Php,Xml,我在工作上花了很多时间 我要做的是按城市(本例中为市场)过滤xml文件 这是xml数据 <itemset> <item> <id>2171</id> <market>Vancouver</market> <url>http://</url></item> <item> <id>2172</id> <market>Toronto</mar
<itemset>
<item>
<id>2171</id>
<market>Vancouver</market>
<url>http://</url></item>
<item>
<id>2172</id>
<market>Toronto</market>
<url>http://</url></item>
<item>
<id>2171</id>
<market>Vancouver</market>
<url>http://</url></item>
2171
温哥华
http://
2172
多伦多
http://
2171
温哥华
http://
这是我的密码
<?php
$source = 'get-xml-feed.php.xml';
$xml = new SimpleXMLElement($source);
$result = $xml->xpath('//item/[contains(market, \'Toronto\')]');
while(list( , $node) = each($result)) {
echo '//Item/[contains(Market, \'Toronto\')]',$node,"\n";
}
?>
如果我可以实现此功能,我希望根据筛选结果访问每个元素,项目[0],项目[1]
谢谢我建议使用。与使用特定的XML对象+XPath相比,学习曲线的步骤更少。它以您描述的格式返回一个对象
试试这个,你就会明白我的意思:
<?php
$source = 'get-xml-feed.php.xml';
$xml = simplexml_load_file($source);
var_dump($xml);
?>
如果您只是有一个XML片段,那么还有一个问题。我建议使用。与使用特定的XML对象+XPath相比,学习曲线的步骤更少。它以您描述的格式返回一个对象
试试这个,你就会明白我的意思:
<?php
$source = 'get-xml-feed.php.xml';
$xml = simplexml_load_file($source);
var_dump($xml);
?>
如果您只需要一个XML片段,也会出现这种情况。我认为这实现了您使用XPath寻找的内容:
<?php
$source = file_get_contents('get-xml-feed.php.xml');
$xml = new SimpleXMLElement($source);
foreach ($xml as $node)
{
$row = simplexml_load_string($node->asXML());
$result = $row->xpath("//item/market[.='Toronto']");
if ($result[0])
{
var_dump($row);
}
}
?>
我认为这实现了您使用XPath所寻找的:
<?php
$source = file_get_contents('get-xml-feed.php.xml');
$xml = new SimpleXMLElement($source);
foreach ($xml as $node)
{
$row = simplexml_load_string($node->asXML());
$result = $row->xpath("//item/market[.='Toronto']");
if ($result[0])
{
var_dump($row);
}
}
?>
我想我们可能正在尝试获取包含特定节点的父节点。为此,您将需要以下xpath表达式:“//item/market[.='Toronto']/..”我想我们可能正在尝试获取包含特定节点的父节点。为此,您需要使用以下xpath表达式:'//item/market[.='Toronto']/..'