给出以下内容:
您将注意到,此xml示例中嵌入的是一个Organization节点,其自己的命名空间用xmlns =“”
这是声明的,而不是使用前缀。 有没有办法找到使用xpath在xml文档中声明的所有命名空间?
我尝试了一些变体,遗憾的是xmlns不像文档的任何其他属性那样对待(出于显而易见的原因),我找不到使用xpath将它们删除的方法。
// @ *不包括它们。
我需要一份文档中所有xmlns属性的列表。
<rss version="2.0" xmlns:a10="http://www.w3.org/2005/Atom">
<channel xmlns:media="http://search.yahoo.com/mrss">
<title>Search Results Title</title>
<link>http://acme.co.za/searchResults</link>
<description>Search Results Descrption</description>
<item>
<guid isPermaLink="false">uuid:169d3229-3b99-4647-9791-492bbbf4c419/PGS0900.PDF</guid>
<link>link</link>
<title>Title</title>
<description>This page...</description>
<media:thumbnail url="..." width="100" height="100"></media:thumbnail>
<Organisation xmlns="http://acme.co.za/MYNAMESPACE" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<Name>Volkswagen</Name>
<Business>Kraft-durch-Freude-Wagen</Business>
<Type>Public</Type>
<RegistrationNumber>5908213224080</RegistrationNumber>
</Organisation>
</item>
</channel>
</rss>
答案 0 :(得分:1)
您应该可以执行//namespace:*
但是,假设这有效,它将按文档顺序为您提供一个命名空间节点列表,其中包含大量重复项。简单地通过DOM遍历文档,累积名称空间的集合(无欺骗)可能会更好。请注意,您需要检查属性和元素。
答案 1 :(得分:0)
正确的语法是 //命名空间URI()
它为您提供了文档中的所有命名空间。
此致 克雷格。