【问题标题】:XmlDocument.SelectSingleNode omit prefixes and namespacesXmlDocument.SelectSingleNode 省略前缀和命名空间
【发布时间】:2012-03-13 23:07:26
【问题描述】:

此问题是已回答问题的后续问题: XmlDocument.SelectSingleNode and prefix + xmlNamespace issue

问题是将来接收到的xml的命名空间前缀可能会在没有警告的情况下更改,所以我们想知道是否有任何方法可以使用SelectSingleNode但省略元素的前缀。

(我们知道我们可以删除传入 xml 的所有前缀,但这需要更多步骤......尽管如果提供了代码,我们会认为这是一个有效的答案......)

【问题讨论】:

    标签: c# xml xmlnode selectsinglenode selectnodes


    【解决方案1】:

    前缀名称是否更改无关紧要,只要命名空间 URI 不更改即可。

    您在代码中使用的前缀名称与 XML 文档中的前缀名称不必匹配,例如

    namespaces.AddNamespace("foo", "http://exception.do29.imq.es/xsd");
    XmlNode nodemsg = xmldocu.SelectSingleNode("//foo:message", namespaces);
    

    【讨论】:

      【解决方案2】:

      可以在 xpath 中使用 * 来省略它,例如:

      //*[local-name()='ElementName']
      

      基于问题XPath select node with namespace

      作为一个额外的工具,这个工具对于测试不同的 xpath 非常有用....http://xpathvisualizer.codeplex.com/

      【讨论】:

        猜你喜欢
        • 2018-04-30
        • 1970-01-01
        • 1970-01-01
        • 2012-03-13
        • 2011-02-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-10-22
        相关资源
        最近更新 更多