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

前端之家收集整理的这篇文章主要介绍了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.

猜你在找的C#相关文章