解析XML:我的元素中的冒号导致XPath错过它

Mik*_*e K 6 c# xml xpath selectsinglenode

我有一个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:"只是因为我不知道如何处理它.

Jam*_*lak 8

"t:"是名称空间前缀,它绑定到名称空间"urn:InboundShipment".为了正确处理它,你必须告诉c#绑定的前缀是什么. 此页面应说明如何使用System.Xml.XmlNamespaceManager来处理命名空间.

编辑:也请参阅此答案.