XML节点存在namespace(xmlns)的时候xpath不能正常工作
xml文件如下:
1 <MODULE>
2 <MESSAGE Type="Reply" Reference="Ref3">
3 <PARAMETER Name="PublicReply" Type="XMLString">
4 <MyAPI_RESULT xmlns="MyAPI">
5 <ANSWER ID="801">
6 <RECORDS>
7 <ROW ForID="123456" data1="1" data2="2" data3="3"/>
8 </RECORDS>
9 </ANSWER>
10 </MyAPI_RESULT>
11 </PARAMETER>
12 </MESSAGE>
13 </MODULE>
2 <MESSAGE Type="Reply" Reference="Ref3">
3 <PARAMETER Name="PublicReply" Type="XMLString">
4 <MyAPI_RESULT xmlns="MyAPI">
5 <ANSWER ID="801">
6 <RECORDS>
7 <ROW ForID="123456" data1="1" data2="2" data3="3"/>
8 </RECORDS>
9 </ANSWER>
10 </MyAPI_RESULT>
11 </PARAMETER>
12 </MESSAGE>
13 </MODULE>
如果按往常查询的话:
XmlDocument doc = new XmlDocument();
doc.LoadXml(strXMLData);
XmlNode root = doc.SelectSingleNode(".//RECORDS");root是null。
解决办法:
1
XmlDocument doc = new XmlDocument();
2
doc.LoadXml(strXMLData);
3
XmlNamespaceManager manager = new XmlNamespaceManager(doc.NameTable);
4
manager.AddNamespace("MyAPI", "MyAPI");
5
XmlNode root = doc.SelectSingleNode("//MyAPI:RECORDS", manager);
XmlDocument doc = new XmlDocument();2
doc.LoadXml(strXMLData);3
XmlNamespaceManager manager = new XmlNamespaceManager(doc.NameTable);4
manager.AddNamespace("MyAPI", "MyAPI");5
XmlNode root = doc.SelectSingleNode("//MyAPI:RECORDS", manager);加上XmlNamespaceMananger就可以正常了。
浙公网安备 33010602011771号