• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

C#讀取帶NameSpace的XML

原作者: [db:作者] 来自: [db:来源] 收藏 邀请
<?xml version="1.0"?>
<aws:UrlInfoResponse xmlns:aws="http://alexa.amazonaws.com/doc/2005-10-05/">
 <aws:Response xmlns:aws="http://awis.amazonaws.com/doc/2005-07-11">
  <aws:UrlInfoResult>
<aws:Alexa>
<aws:ContactInfo>
<aws:Email>[email protected]</aws:Email>
</aws:ContactInfo>
<aws:Alexa>
  </aws:UrlInfoResult>
 </aws:Response>
</aws:UrlInfoResponse>
假如你要取得<aws:Email>节点,诶,你发现<aws:UrlInfoResponse>和<aws:Response>节点的命名空间马甲是一样的。
这个时候怎么办呢?难道是添加两次aws命名空间?其实不然。做法如下:
1.我们只要添加<aws:Response>节点的命名空间。
xnm.AddNamespace("aws", "http://awis.amazonaws.com/doc/2005-07-11");
2.取得根节点,这样我们就可以忽略根结点的命名空间,然后应用XPath取得你想要的节点。
XmlElement xe = xd.DocumentElement;
XmlNodeList xnl = xe.SelectNodes(
"//aws:Response/aws:UrlInfoResult/aws:Alexa/aws:ContactInfo/aws:Email", xnm);
直接这样取好像也可以:
XmlNodeList xnl = xd.SelectNodes(
"//aws:Response/aws:UrlInfoResult/aws:Alexa/aws:ContactInfo/aws:Email", xnm);
这样我们就可以得到<aws:Email>节点了,然后打印出来
foreach (XmlNode xn1 in xnl)
{
Response.Write(xn1.InnerXml.ToString() + "</br>");
}
完整代码:
XmlDocument xd = new XmlDocument();
xd.Load(Server.MapPath(".")+"/a.xml");
XmlNamespaceManager xnm = new XmlNamespaceManager(xd.NameTable);
xnm.AddNamespace("aws", "http://awis.amazonaws.com/doc/2005-07-11");
XmlElement xe = xd.DocumentElement;
XmlNodeList xnl = xe.SelectNodes(
"//aws:Response/aws:UrlInfoResult/aws:Alexa/aws:ContactInfo/aws:Email", xnm);
//XmlNodeList xnl = xd.SelectNodes(
//"//aws:Response/aws:UrlInfoResult/aws:Alexa/aws:ContactInfo/aws:Email", xnm);
foreach (XmlNode xn1 in xnl)
{
Response.Write(xn1.InnerXml.ToString() + "</br>");
}
--------------------------------------------------------
譬如要讀到DataSet中,如:

               XmlDocument doc = new XmlDocument();
                doc.Load(filename);
                XmlNamespaceManager xnm = new XmlNamespaceManager(doc.NameTable);
                xnm.AddNamespace("s", "uuid:BDC6E3F0-6DA3-11d1-A2A3-00AA00C14882");
                xnm.AddNamespace("rs", "urn:schemas-microsoft-com:rowset");

                XmlNode node = doc.SelectSingleNode("//xml/rs:data", xnm);
                XmlNodeReader reader = new XmlNodeReader(node);
                ds.ReadXml(reader);


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
C#处理应用程序减少内存占用SetProcessWorkingSetSize减少内存占用发布时间:2022-07-13
下一篇:
c#画图之雷达图发布时间:2022-07-13
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap