在 C# 的根元素中使用命名空间分析 XML

本文关键字:命名空间 XML 元素 | 更新日期: 2023-09-27 18:32:17

由于根目录中的"xmlns"属性,我在C#中解析以下XML时遇到问题。

<CaptureResponse xmlns="http://mws.amazonservices.com/schema/OffAmazonPayments/2013-01-01">
    <CaptureResult>
        <State>Open</State>
    </CaptureResult>
</CaptureResponse>

例如,我将如何使用上述 xml 检查 C# 中是否存在该元素?以下不起作用。

        XmlDocument doc = new XmlDocument();
        doc.LoadXml(response);
        if (doc.SelectSingleNode("CaptureResponse") != null) 
        {}

在 C# 的根元素中使用命名空间分析 XML

需要一个XmlNamespaceManager。创建一个并在 XML 文档中添加对命名空间的引用。

AddNamespace()中的"s"是命名空间前缀的一个示例,可以在选择查询中使用,而不必为每个节点添加完整的命名空间前缀。S 可以替换为您希望使用的任何前缀。

XmlNamespaceManager nsMgr = new XmlNamespaceManager(doc.NameTable);
nsMgr.AddNamespace("s", "http://mws.amazonservices.com/schema/OffAmazonPayments/2013-01-01");
XmlNode myNode = doc.SelectSingleNode("s:CaptureResponse", nsMgr);

你的 XPath 不明确。 试试这个:

XmlNode Root = doc.SelectSingleNode("/CaptureResponse");