6

我有一个加载的 XML 文档并尝试使用 XPath 进行搜索。此文件中的根节点是<t:Transmission xmlns:t='urn:InboundShipment'>,文件结尾用 . 正确关闭</t:Transmission>

我的问题是我不能在不使用后代轴的情况下走树。换句话说,我可以做到:SelectSingleNode("//TransactionHeader[SHIPPERSTATE='CA']")并得到一个节点作为回报。但我不能做应该等效的事情:SelectSingleNode("/Transmission/TransmissionBody/Transaction/TransactionHeader[SHIPPERSTATE='CA']")

如果我删除了,t:我可以进行 XPath 搜索/Transmission并获取整个文件。在t:那里我只是得到空值。或者,如果我尝试SelectSingleNode("t:Transmission")使用 XPath 语句出现错误。

我通常不需要查询根元素,所以我应该能够只使用后代轴进行搜索。但是 XML 对我来说看起来是有效的,所以我想知道如何解决这个问题。另外,我不想仅仅因为我不知道如何处理就要求客户删除“t:”。

4

1 回答 1

8

“t:”是命名空间前缀,绑定到命名空间“urn:InboundShipment”。为了正确处理它,您必须告诉 c# 前缀绑定到什么。 这个页面应该解释如何使用 System.Xml.XmlNamespaceManager 来处理命名空间。

编辑:也请参阅此答案

于 2009-10-16T17:26:39.240 回答