C# LinqToXML:访问子元素
我试图找出一个解决我遇到的一个小问题的办法,但在过去的两天里,我并没有取得多大的成功。我在这里浏览了很多帖子,但是我没有为自己找到一个合适的解决方案。我知道这可能是你们的基本问题,但我似乎已经失去了注意力,可以清楚地思考这个问题 所以,这就是问题所在。下面是一个示例XML,具有我需要的结构。我想要的是读取这个XML,转到我想要的事件,然后读取/存储所有测试元素C# LinqToXML:访问子元素,c#,xml,linq,C#,Xml,Linq,我试图找出一个解决我遇到的一个小问题的办法,但在过去的两天里,我并没有取得多大的成功。我在这里浏览了很多帖子,但是我没有为自己找到一个合适的解决方案。我知道这可能是你们的基本问题,但我似乎已经失去了注意力,可以清楚地思考这个问题 所以,这就是问题所在。下面是一个示例XML,具有我需要的结构。我想要的是读取这个XML,转到我想要的事件,然后读取/存储所有测试元素 <Config> <Events> <Event_1> <NameOfEven
<Config>
<Events>
<Event_1>
<NameOfEvent>SomeName:</NameOfEvent>
<test id="test001">
<xpath>"some xpath"</xpath>
<value>someValue1</value>
<tagName>none</tagName>
</test>
<test id="test002">
<xpath>"some xpath"</xpath>
<value>someValue2</value>
<tagName>none1</tagName>
</test>
<test id="test003">
<xpath>"some xpath"</xpath>
<value>someValue3</value>
<tagName>none2</tagName>
</test>
</Event_1>
</Events>
</Config>
然后,我想使用foreach循环来访问所有测试元素。但是,我只能访问第一个元素测试的chiled节点。
你能帮忙吗?提前谢谢大家 假设您的XML没有特定的名称空间
var evt = (from el in doc.Descendants("test")
where el.Parent.Name == "Event_1"
group el by el.Parent.Element("NameOfEvent").Value into g
select new {
Name = g.Key,
Tests = g.Select(x => new {
XPath = x.Element("xpath").Value,
Value = x.Element("value").Value,
TagName = x.Element("tagName").Value
})
}).FirstOrDefault();
Console.WriteLine("Event name: " + evt.Name);
foreach (var test in evt.Tests)
{
Console.WriteLine(test.XPath);
Console.WriteLine(test.Value);
Console.WriteLine(test.TagName);
}
非常感谢您!它工作得很好。所以我采取了完全错误的方法。
var evt = (from el in doc.Descendants("test")
where el.Parent.Name == "Event_1"
group el by el.Parent.Element("NameOfEvent").Value into g
select new {
Name = g.Key,
Tests = g.Select(x => new {
XPath = x.Element("xpath").Value,
Value = x.Element("value").Value,
TagName = x.Element("tagName").Value
})
}).FirstOrDefault();
Console.WriteLine("Event name: " + evt.Name);
foreach (var test in evt.Tests)
{
Console.WriteLine(test.XPath);
Console.WriteLine(test.Value);
Console.WriteLine(test.TagName);
}