今天做一个第三方数据对接,从第三方系统获取一些内容之后进行处理。不过遇到了一个问题,返回的内容是包含在xml节点中的,要从xml节点中把有效内容提取出来,因为xml格式有些特殊,用之前的XmlDocument的一些代码有报错。

xml内容如下:

<ns:getAllQuickInfoResponse xmlns:ns="http://webservice.sp.action.org">
    <ns:return>
        (有效内容...)
    </ns:return>
</ns:getAllQuickInfoResponse>

带了namespace,因此需要对原有的代码进行一些调整,经过一番探索,找到了正确的提取办法:

参考:https://www.c-sharpcorner.com/UploadFile/manas1/read-xml-data-with-namespce-using-xmldocument/

XmlDocument doc = new XmlDocument();
doc.LoadXml(resp);
//namespace的问题要处理一下
XmlNamespaceManager nsmgr = new XmlNamespaceManager(doc.NameTable);
nsmgr.AddNamespace("ns", "http://webservice.sp.action.org");

XmlNode node = doc.SelectSingleNode("ns:getAllQuickInfoResponse/ns:return", nsmgr);

Console.WriteLine("节点:" + node.InnerText);

提取成功:

C# 读取带namespace的xml内容_C#编程

总结:对于xml节点的名称,一开始看不懂,为什么是 ns:xxxx这种形式的?后来搞清楚了,ns是个简写,后面的xmlns:ns="http://webservice.sp.action.org 就是对这个ns的具体说明。