【发布时间】:2011-01-09 14:47:11
【问题描述】:
我们有一个 Web 服务,它返回一个非常简单的 XML。
<?xml version="1.0"?>
<t:RequestResult xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://our.website.com/ns/" xmlns:t="http://our.website.com/ns/">
<t:Result>No candy for you today.</t:Result>
<t:Success>false</t:Success>
</t:RequestResult>
调用者得到这个 XML 没有问题,使用 XMLHTTP。 但是由于 "Reference to undeclared namespace prefix: 't'"
,XPath 查询对这个 XML 不起作用为什么会这样?我想说't'前缀有点声明。 该文件是否无效?
如果您想知道为什么我们必须首先使用use XmlNamespaceDeclarations to add namespace prefixes,那是因为否则无法查询结果文档,因为它具有目标名称空间但没有前缀,因此 XPath 忽略节点名称,因为它们不属于请求的(空)命名空间,并且我们不想使用像 "//*[namespace-uri()='http://our.website.com/ns' and local-name()='RequestResult']" 这样的结构。
【问题讨论】:
标签: asp.net xml .net-3.5 xpath namespaces