Php Xpath按属性值筛选并选择备用属性
我在XPath查询方面遇到问题。我正在使用Php Xpath按属性值筛选并选择备用属性,php,xml,xpath,blogger,Php,Xml,Xpath,Blogger,我在XPath查询方面遇到问题。我正在使用//link[@rel='alternate'],但这将返回一个空节点集。我正在尝试编写一个查询,为rel=alternate的所有链接节点选择href属性的值 我做错了什么 下面是我正在使用的xml结构的简化示例 <feed> <entry> <id>1980475</id> <link rel="post" href="http://..."><
//link[@rel='alternate']
,但这将返回一个空节点集。我正在尝试编写一个查询,为rel=alternate的所有链接节点选择href属性的值
我做错了什么
下面是我正在使用的xml结构的简化示例
<feed>
<entry>
<id>1980475</id>
<link rel="post" href="http://..."></link>
<link rel="edit" href="http://..."></link>
<link rel="alternate" href="http://..."></link>
</entry>
<entry>
<id>1980476</id>
<link rel="post" href="http://..."></link>
<link rel="edit" href="http://..."></link>
<link rel="alternate" href="http://..."></link>
</entry>
</feed>
正如@Jens所指出的,您可能正在处理Atom提要。Atom中的XML元素位于Atom命名空间中,其URI为
http://www.w3.org/2005/Atom
您需要注册该名称空间并在XPath表达式中使用它。请看如何做到这一点
当您发布输入XML的“简化示例”时,您可能删除了默认名称空间声明,如中所示
<feed xmlns="http://www.w3.org/2005/Atom">
正如@Jens所指出的,您可能正在处理Atom提要。Atom中的XML元素位于Atom命名空间中,其URI为
http://www.w3.org/2005/Atom
您需要注册该名称空间并在XPath表达式中使用它。请看如何做到这一点
当您发布输入XML的“简化示例”时,您可能删除了默认名称空间声明,如中所示
<feed xmlns="http://www.w3.org/2005/Atom">
您还可以发布当前正在尝试的代码吗?
//link[@rel='alternate']
$xmlDoc=simplexml\u load\u文件(“filepath.xml”)$nodelist=$xmlDoc->xpath(“//link[@rel='alternate']);
我尝试了你的代码并计数($xml->xpath('//link[@rel='alternate']))返回2,这是正确的:我打赌在实际的XML中有一些名称空间声明。在发送XPath查询之前注册这些名称空间声明。您还可以发布当前正在尝试的代码吗?//link[@rel='alternate']
$xmlDoc=simplexml\u load\u file(“filepath.XML”);$nodelist=$xmlDoc->XPath(//link[@rel='alternate']));
我尝试了您的代码,并且count($xml->xpath('//link[@rel=“alternate”]')
返回2,这是正确的:我打赌在实际的xml中有一些名称空间声明。在发送XPath查询之前注册这些查询。
xpath("//a:link[@rel='alternate']")