解析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 = @"Ola Hello "; 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);
- 无法在ASP.NET中强制转换System.Web.UI.WebControls.GridView类型的对象
- Response.Write过时?
- 使用Server.MapPath()和FileUpload.SaveAs()进行文件上传
- 发送包含HTML文件作为正文的电子邮件(C#)
- 什么是Visual Studio 2017中的entity framework’数据库优先’的替代品
- “DataBinding:’index + NewsItem’不包含名为’Link’的属性,但属性存在(不是错字)
- ASP.NET回发在URL重写中产生问题?
- ASP.NET请求validation原因:是否有列表?
- 如何从ASP.NET 4.0 Web应用程序中禁用/删除WebPageHttpModule?