我正在尝试仅为'US'提取PageViews%,而我在设置xpath方面遇到了麻烦。有什么想法吗?
<aws:TrafficData>
<aws:DataUrl type="canonical">jobdiagnosis.com/</aws:DataUrl>
<aws:RankByCountry>
<aws:Country Code="IN">
<aws:Rank>54968</aws:Rank>
<aws:Contribution>
<aws:PageViews>0.46%</aws:PageViews>
<aws:Users>0.46%</aws:Users>
</aws:Contribution>
</aws:Country>
<aws:Country Code="US">
<aws:Rank>703</aws:Rank>
<aws:Contribution>
<aws:PageViews>78.11%</aws:PageViews>
<aws:Users>77.39%</aws:Users>
</aws:Contribution>
</aws:Country>
</aws:RankByCountry>
xpath('//Country[Code="US"]//PageViews')
答案 0 :(得分:1)
文档中的所有元素都在某个命名空间中,因此您需要为该命名空间URI注册前缀,并在XPath表达式的每个步骤中使用该前缀来引用元素名称。注册的前缀不必与文档中使用的前缀匹配,但名称空间URI必须匹配。
假设您已将XML读入变量$xml
$xml->registerXPathNamespace("aws", "http://that.namespace.uri");
$pageviews = $xml->xpath('//aws:Country[@Code="US"]/*/aws:PageViews');
答案 1 :(得分:0)
试试这个:
xpath('//Country[Code="US"]//PageViews')
而不是:
xpath('//Country[Code="US"]//PageView')
<强>更新强>
试试这个:
xpath('/Country[@Code="US"]/PageViews']
答案 2 :(得分:0)
介意命名空间(aws):
$pageviews = $xml->xpath('//aws:Country[@Code="US"]/Contribution/PageViews');
或使用http://www.php.net/manual/en/simplexmlelement.registerxpathnamespace.php
答案 3 :(得分:-1)
感谢大家的帮助,但是我仍然无法使用xpath工作。决定诉诸于按国家排名&#39;排名。阵列直到找到&#39; US&#39;。不理想,但它将满足我的需求。再次感谢!