加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-15 08:18:01 所属栏目:百科 来源:网络整理
导读:我有一个 XML文档,我加载并尝试使用XPath进行搜索.此文件中的根节点是 t:Transmission xmlns:t ='urn:InboundShipment'并使用 / t:Transmission正确关闭文件结束. 我的问题是我不能在不使用后代轴的情况下走树.换句话说,我可以这样做:SelectSingleNode(
我有一个 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.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读