首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SimpleXML:获取具有特定属性的父级的子级

SimpleXML:获取具有特定属性的父级的子级
EN

Stack Overflow用户
提问于 2014-04-10 04:54:56
回答 4查看 140关注 0票数 0

我正在尝试提取'US‘的XPath%,但在为它设置PageViews时遇到了问题。有什么想法吗?

代码语言:javascript
复制
<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>
代码语言:javascript
复制
xpath('//Country[Code="US"]//PageViews')
EN

回答 4

Stack Overflow用户

发布于 2014-04-10 10:19:46

文档中的所有元素都在某个名称空间中,因此需要为该名称空间URI注册一个前缀,并在引用元素名称的XPath表达式的每个步骤中使用该前缀。注册的前缀不必与文档中使用的前缀匹配,但名称空间URI必须匹配。

假设您已经将XML读取到变量$xml

代码语言:javascript
复制
$xml->registerXPathNamespace("aws", "http://that.namespace.uri");
$pageviews = $xml->xpath('//aws:Country[@Code="US"]/*/aws:PageViews');
票数 1
EN

Stack Overflow用户

发布于 2014-04-10 05:02:22

试试这个:

代码语言:javascript
复制
xpath('//Country[Code="US"]//PageViews')

而不是这样:

代码语言:javascript
复制
xpath('//Country[Code="US"]//PageView')

更新

试试这个:

代码语言:javascript
复制
xpath('/Country[@Code="US"]/PageViews']
票数 0
EN

Stack Overflow用户

发布于 2014-04-10 05:34:50

注意名称空间(aws):

代码语言:javascript
复制
$pageviews = $xml->xpath('//aws:Country[@Code="US"]/Contribution/PageViews');

或者使用http://www.php.net/manual/en/simplexmlelement.registerxpathnamespace.php

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22973726

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档