我有以下XML
<School Version="30">
<Math>
<Lesson1 Type="Active">Introduction</Reset_mode>
<Lesson2 Type="Active">Fundamentals</Reset_mode>
</Math>
</School>
我想获得子课程第1课,第2课
我在XDocument中加载XML
我不得不质疑 - 这个查询有什么问题
var nodes = from C in document.Element("School").Elements()
where document.Element("School").Elements().Contains(t => t.Name == "Math")
select C ; //shortcutsXMLDocument.SelectNodes(Query);
它引起错误。
我也可以在XDocument中使用XPath吗?
答案 0 :(得分:3)
您正在寻找ShortcutList
元素:
Element("ShortcutList")
哪个不存在。
你应该写这个来获得subLessons:
var items = document.Element("School").Element("Math").Elements();
foreach(var item in items)
{
DoSomething(item);
}
答案 1 :(得分:1)
LINQ to XML:
from subject in XDocument.Load(xml).Element("School").Elemens()
where subject.Name == "Math"
select subject.Elements();
使用XmlDocument的XPath:
var doc = new XmlDocument();
doc.LoadXml(xml);
var nodes = doc.SelectNodes("School/Math/Lesson1 or School/Math/Lesson2");
答案 2 :(得分:0)
document.Decendants("Math");
使用您的两个元素为您提供IEnumerable。 它等于xpath // Math
答案 3 :(得分:0)
来自此命名空间System.Xml.XPath的XElement / XDocument上使用的Xpath案例。
这是您对路径的查询...
var nodes = from document.XPathSelectElements中的C(“./ Math”) 选择C; //shortcutsXMLDocument.SelectNodes(Query);