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 " );
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);
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就可以正常了。