java xpath 默认命名空间_使用XML前缀/命名空间创建Xpath

这是我的prior question的后续内容 . 我想我跳到了深处,所以花一些时间完全理解XML命名空间 .

从this XML页面开始,重点关注以下元素:

我知道 m: 前缀用于区分 properties 元素与其他文档中具有相同名称的元素,以防这些文档被组合 . 我理解为了使用前缀,必须定义该前缀的命名空间 . 这样的定义是使用XML命名空间属性(xmlns)完成的,语法是 xmlns:prefix="URI" . URI是Uniform Resource Identifier,它基本上是元素的源 . URI曾经被称为Uniform Resource Names (URN),这基本上是相同的 .

现在来看看我之前的答案:

$url = "http://www.treasury.gov/resource-center/data-chart-center/interest-rates/pages/XmlView.aspx?data=yieldyear&year=2015";

$element = simplexml_load_file($url);

$element->registerXPathNamespace(

'atom', 'http://www.w3.org/2005/Atom'

);

$element->registerXpathNamespace(

'meta', 'http://schemas.microsoft.com/ado/2007/08/dataservice/metadata'

);

foreach ($element->xpath('//atom:entry/atom:content/meta:properties') as $properties) {

$properties->registerXpathNamespace('data', 'http://schemas.microsoft.com/ado/2007/08/dataservices');

echo $properties->xpath('data:Id')[0], "\n";

echo $properties->xpath('data:NEW_DATE')[0], "\n\n";

}

XPath是一种用于定义XML文档部分的语法 . registerXPathNamespace() 函数为指定的命名空间创建前缀 .

为什么 atom 前缀是使用 registerXPathNamespace() 为 创建的,为了引用它 //atom:entry/atom:content/meta:properties ,因为条目标签不使用前缀,这是有道理的 .

为什么创建了 meta 前缀?已经有一个 m: 前缀定义了相同的命名空间 .

使用下面会做同样的事情吗?

//atom:entry/atom:content/m:properties

不幸的是,直到今天晚些时候我才能访问我的服务器 . 我会自己测试一下 . 如果它不起作用,为什么不更感兴趣,逻辑会建议它应该?

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值