今天做一个第三方数据对接,从第三方系统获取一些内容之后进行处理。不过遇到了一个问题,返回的内容是包含在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);
提取成功:
总结:对于xml节点的名称,一开始看不懂,为什么是 ns:xxxx这种形式的?后来搞清楚了,ns是个简写,后面的xmlns:ns="http://webservice.sp.action.org 就是对这个ns的具体说明。