介绍
怎么在c#中解析XML ?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。
& lt; ? xml version=?.0“,编码=癠TF-8" ?比; & lt; messages  xmlns=癶ttp://www.test.com/hit/rhin", xmlns: xsi=癶ttp://www.w3.org/2001/XMLSchema-instance", xsi: schemaLocation=癶ttp://www.test.com/hit/rhin 文件:///e:/request_message.xsd"比; ,,,& lt;心跳/比; ,,,& lt; switchset> & lt;/switchset> ,,,& lt; business> ,,,,,,,& lt; datasets> ,,,,,,,,,,,& lt; setdetails> ,,,,,,,,,,,,,,,& lt; WS02_01>内容& lt;/WS02_01> ,,,,,,,,,,,& lt;/setdetails> ,,,,,,,,,,,& lt; setdetails> ,,,,,,,,,,,,,,,& lt; WS02_01>内容& lt;/WS02_01> ,,,,,,,,,,,& lt;/setdetails> ,,,,,,,& lt;/datasets> ,,,& lt;/business> & lt;/messages>
- <李>
xmlns是默认的命名空间,在有命名空间情况下,需要使用XmlNamespaceManager进行处理。
李> <李> xmlns: xsi定义了一个命名空间前缀xsi对应的唯一字符串www.w3.org/2001/XMLSch…,而且这个xmlns: xsi在不同的xml文档中似乎都会出现。这是因为xsi已经成为了一个业界默认的用于XSD (xml模式定义)文件的命名空间。而XSD文件(也常常称为模式文件)是用来定义xml文档结构的。
xml解析器可以根据一个XSD文件的内容来解析另一个xml文件,判断该文件的结构是否和XSD文件中定义的一致。XSD文件可以理解为xml文档可以自定义的语法或格式检查器。
引用><李>
xsi: schemaLocation是一个由空格分开的键值对,前一个键www.test.com/hit/rhin是命名空间,是一个全局唯一字符串。后一个值是XSD位置URI,这个值指示了前一个命名空间所对应的XSD文件的位置,xml解析器可以利用这个信息获取到XSD文件,从而通过XSD文件对所有属于命名空间www.test.com/hit/rhin的元素结构进行校验,因此这个值必然是可以访问的,且访问到的内容是一个XSD文件的内容
李>具体实现代码:
//读取xml ,,,XmlDocument xml =, new XmlDocument (); ,,,xml.LoadXml (XMLData); ,,,//命名空间处理 ,,,XmlNamespaceManager m =, new XmlNamespaceManager (xml.NameTable); ,,,m.AddNamespace (“xsi",,“http://www.w3.org/2001/XMLSchema-instance"); ,,,m.AddNamespace (“d",,“http://www.test.com/hit/rhin");,//d是随意的一个命名 ,,,, ,,,//读取数据节点,需要带上命名空间 ,,,XmlNodeList dataNodeList =, xml.SelectNodes (“d:消息/d:商业/d:数据集/d: setdetails",,米); ,,,if (dataNodeList !=, null ,,, dataNodeList.Count 祝辞,0) ,,,{ ,,,,,,,for (int 小姐:=,0;,小姐:& lt;, dataNodeList.Count;,我+ +) ,,,,,,,{ ,,,,,,,,,,,var model =,, XmlToEntity(dataNodeList[我].OuterXml,“http://www.test.com/hit/rhin"); ,,,,,,,} ,,,,,,,,,, ,,,} XmlToEntity方法将xml反序列化到模型实体上。
privated T XmlToEntity(string xml, string 名称空间) ,,,{ ,,,,,,,T obj =,违约(T); ,,,,,,,试一试 ,,,,,,,{ ,,,,,,,,,,,XmlRootAttribute root =, new XmlRootAttribute (“setdetails"); ,,,,,,,,,,,root.Namespace =,名称空间;//带命名空间的操作 ,,,,,,,,,,,XmlSerializer serializer =, new XmlSerializer (typeof (T)、根); ,,,,,,,,,,,StringReader sr =, new StringReader (xml); ,,,,,,,,,,,obj =, (T) serializer.Deserialize (sr); ,,,,,,,,,,,sr.Close (); ,,,,,,,} ,,,,,,,catch (Exception 交货) ,,,,,,,{ ,,,,,,,,,,,Console.WriteLine (ex.Message); null null null null null null null null null 怎么在c#中解析XML