C# 解析xml文件(带命名空间 xmlns和 xmlns:xsi)
1、带有命名空间 并且命名空间后带 xmlns:xsi =" "
1 <?xml version="1.0" encoding="utf-8" ?> 2 <SendExResp xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="urn:schemas-microsoft-com:office:spreadsheet"> 3 <PayCount>1</PayCount> 4 <BlackWords /> 5 <ErrorMobiles /> 6 <BlackMobiles /> 7 <BatchSendID>00000000-0000-0000-0000-000000000000</BatchSendID> 8 <Result> 9 <name>王麻子</name> 10 </Result> 11 <ErrorDesc>成功</ErrorDesc> 12</SendExResp>
解析:
1 String path = System.AppDomain.CurrentDomain.BaseDirectory + "//return.xml"; 2 3 XmlDocument xmldoc = new XmlDocument(); 4 xmldoc.Load(path); 5 6 XmlNamespaceManager namespaceManager = new XmlNamespaceManager(xmldoc.NameTable); //namespace 7 namespaceManager.AddNamespace("xsi", "http://www.w3.org/2001/XMLSchema-instance"); 8 namespaceManager.AddNamespace("xsd", "http://www.w3.org/2001/XMLSchema"); 9 namespaceManager.AddNamespace("d","urn:schemas-microsoft-com:office:spreadsheet"); 10 XmlNode node = xmldoc.SelectSingleNode("descendant::d:Result/d:name", namespaceManager);
11 string name= string.empty; 12 if (node != null) 13 { 14 name = node.InnerText; 15 }
Conosle.WriteLine("name:"+ name);
Conosle.ReadKey();
运行结果: name:王麻子
2、带有命名空间 不带前缀 xmlns=" "
1 <?xml version='1.0'?> 2 <bookstore xmlns="urn:newbooks-schema"> 3 <book genre="novel" style="hardcover"> 4 <title>The Handmaid's Tale</title> 5 <author> 6 <first-name>Margaret</first-name> 7 <last-name>Atwood</last-name> 8 </author> 9 <price>19.95</price> 10 </book> 11 <book genre="novel" style="other"> 12 <title>The Poisonwood Bible</title> 13 <author> 14 <first-name>Barbara</first-name> 15 <last-name>Kingsolver</last-name> 16 </author> 17 <price>11.99</price> 18 </book> 19 </bookstore>
解析:
1 public static void Main() 2 { 3 4 XmlDocument doc = new XmlDocument(); 5 doc.Load("newbooks.xml"); 6 7 // Create an XmlNamespaceManager to resolve the default namespace. 8 XmlNamespaceManager nsmgr = new XmlNamespaceManager(doc.NameTable); 9 nsmgr.AddNamespace("bk", "urn:newbooks-schema"); 10 11 // Select the first book written by an author whose last name is Atwood. 12 XmlNode book; 13 XmlElement root = doc.DocumentElement; 14 book = root.SelectSingleNode("descendant::bk:book[bk:author/bk:last-name='Atwood']", nsmgr); 15 16 Console.WriteLine(book.OuterXml); 17 18 }
对于不可控的事情,保持乐观;
对于可控的事情,保持谨慎