在 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)
{}
需要一个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");