使用LINQ搜索XML文档
我有一个与此类似的xml文档:
...
我想基于属性ID的值返回整个MainItem元素。 如果Attribute ID等于2,那么有效,然后返回MainItem元素。
我无法解决如何使用LINQ执行此操作。 谷歌似乎有很多信息,但我似乎无法找到我正在寻找的东西。
帮助不大?
TIA
🙂
它可能是这样的:
XDocument doc = XDocument.Load("myxmlfile.xml"); XElement mainElement = doc.Element("Root") .Elements("MainItem") .First(e => (int)e.Attribute("ID") == 2); // additional work
这个怎么样:
// load your XML XDocument doc = XDocument.Load(@"D:\linq.xml"); // find element which has a ID=2 value XElement mainItem = doc.Descendants("MainItem") .Where(mi => mi.Attribute("ID").Value == "2") .FirstOrDefault(); if(mainItem != null) { // do whatever you need to do }
渣
我稍微改变了你的XML以获得值:
value 1 val 2
有了这个LINQ:
XDocument xmlDoc = XDocument.Load(@"C:\test.xml"); var result = from mainitem in xmlDoc.Descendants("MainItem") where mainitem.Attribute("ID").Value == "1" select mainitem; foreach (var subitem in result.First().Descendants()) { Console.WriteLine(subitem.Value); } Console.Read();
从这里: 如何:过滤属性(XPath-LINQ到XML)
// LINQ to XML query IEnumerable list1 = from el in items.Descendants("MainItem") where (string)el.Attribute("ID") == "2" select el; // XPath expression IEnumerable list2 = items.XPathSelectElements(".//MainItem[@ID='2']");