解析XML内容 – C#

我没有长时间使用XML,需要从XML响应中提取有用的信息。 如果有2个标签相同但名称不同,例如

 Ola  Hello   

如何使用name =“overflow”提取标记的内容?

您可以使用LINQ To XML:

 var result = XDocument.Parse(xml) .Descendants("lst") .Where(e => (string) e.Attribute("name") == "overflow") .Descendants("str") .Select(x => x.Value) .FirstOrDefault(); 

试试这个开始:

 XPathDocument docNav = new XPathDocument(pathName); XPathNavigator nav = docNav.CreateNavigator(); XmlNamespaceManager ns = new XmlNamespaceManager(nav.NameTable); string val = nav.SelectSingleNode(@"/lst/lst[@name='overflow']/str") 

这些是用于简单XPath导航和.NET XML解析的良好资源:

http://www.w3schools.com/xpath/

http://www.codeproject.com/Articles/52079/Using-XPathNavigator-in-C

您可以使用System.Xml.Linq命名空间:

 var xDoc = XDocument.Parse(xml); var result = xDoc.Descendants() .Where(d => d.Name == "lst" && d.Attributes("name").FirstOrDefault()!=null && d.Attributes("name").FirstOrDefault().Value == "overflow") .FirstOrDefault(); 

用户Linq到xml

 var xmlFile = XDocument.Load(someFile); var query = from item in xmlFile.Descendants("childobject") where !String.IsNullOrEmpty(item.Attribute("using") select new { AttributeValue = item.Attribute("using").Value }; 

您可以使用LINQ to XML执行此操作:

 var doc = XDocument.Load("YourXMLPath.xml"); var content = doc .Element("lst") .Elements("lst") .Where(e=>((string) e.Attribute("name") ?? "")=="overflow") .Select(e=>e.Element("str").InnerText()) .FirstOrDefault(); 

System.Xml.Linq命名空间中的LINQ to XML。

 const string xml = @"OlaHello"; XDocument doc = XDocument.Parse(xml); IEnumerable overflow = doc.Root.Elements("lst").Where(x => (string) x.Attribute("name") == "overflow"); XElement firstOverflow = overflow.FirstOrDefault(); string value = firstOverflow.Descendants("str").FirstOrDefault(x => x.Value);