C#讀取帶NameSpace的XML

來源:互聯網
上載者:User
<?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>baidu_dns_master@baidu.com</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);

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.