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

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

我的问题是我不能在不使用后代轴的情况下走树.换句话说,我可以这样做:SelectSingleNode(“// TransactionHeader [SHIPPERSTATE =’CA’]”)并获得一个节点作为回报.但是我不能做相应的事情:SelectSingleNode(“/ Transmission / TransmissionBody / Transaction / TransactionHeader [SHIPPERSTATE =’CA’]”)

如果我删除t:我可以在/ Transmission上进行XPath搜索获取整个文件.随着t:在那里我得到null.或者,如果我尝试使用SelectSingleNode(“t:Transmission”),我的XPath语句出错.

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

解决方法

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

编辑:也见this answer.

相关文章

原文地址:http://msdn.microsoft.com/en-us/magazine/cc163...
前言 随着近些年微服务的流行,有越来越多的开发者和团队所采...
最近因为比较忙,好久没有写博客了,这篇主要给大家分享一下...
在多核CPU在今天和不久的将来,计算机将拥有更多的内核,Mic...
c语言输入成绩怎么判断等级
字符型数据在内存中的存储形式是什么