C#中解析带有多个命名空间的XML文件

在从事某项目开发过程中,需要使用XML传输数据,但是此次XML获取内容按照常规办法行不通,后面发现是XML文件中含有名称空间,XML文件示例如下:

<?xml version="1.0" encoding="utf-8"?>
<abc:TestXml xmlns:abc="http://www.xxx.com" xmlns:xsi="http://www.w3.org">
  <MessageType>test</MessageType>
  <PrimaryAcctNum>dddddddddddddddddd</PrimaryAcctNum>
  <IDCardNum>66666666666666666</IDCardNum>
  <Mobile>13888888888</Mobile>
</abc:TestXml>

通过查找资料发现,abc:TestXml 这种写法表示TestXml的命名空间为abc。

我们现在所要做的是获取abc:TestXml下子节点的内容,按照常规方法循环读取XML会报错误,需要使用XmlNamespaceManager,代码如下:

 

XmlDocument myDoc = new XmlDocument();
myDoc.Load(@"E:\NET\test.xml");  //加载XML文件
XmlNamespaceManager xnm = new XmlNamespaceManager(myDoc.NameTable);
xnm.AddNamespace("abc", "http://www.xxx.com");
xnm.AddNamespace("xsi", "http://www.w3.org");
XmlNodeList xNodes = myDoc.SelectSingleNode("abc:TestXml", xnm).ChildNodes;//获取节点的所有子节点
string messageType="";
foreach (XmlNode xn in xNodes)//遍历所有子节点
         {
           XmlElement xe = (XmlElement)xn;//将子节点类型转换为XmlElement类型
             if(xe.Name == "MessageType")
             {
               messageType=xe.InnerText;//获取子节点中数据
             }
         }

 

 至此,我们已经能获取到XML文件中数据。

 

 

posted @ 2013-05-28 11:36  yangjiaCS  阅读(253)  评论(0)    收藏  举报