我正在尝试使用标签子容器从以下 XML 中捕获子容器信息,但我不希望捕获嵌套的子容器。我该怎么做?
<sub-container>
<name>subcont1</name>
<name>subcont2</name>
<name>subcont3</name>
<sub-container>
<name>subcont31</name>
<name>subcont32</name>
</sub-container>
<name>subcont4</name>
</sub-container>
我尝试通过标签名称获取元素并检查它们的父节点是否是子容器。嵌套的子容器也被捕获。我实际上希望将它们捕获在 Excel 的不同列中
以下是如何使用 LINQ to XML 在 C# 中执行此操作:
using System.Xml.Linq;
string xml = @"
<root>
<sub-container>
<name>subcont1</name>
<name>subcont2</name>
<name>subcont3</name>
<sub-container>
<name>subcont31</name>
<name>subcont32</name>
</sub-container>
<name>subcont4</name>
</sub-container>
</root>";
XDocument doc = XDocument.Parse(xml);
var topLevelSubcontainers = doc.Descendants("sub-container")
.Where(x => x.Parent == doc.Root);
foreach (var subcont in topLevelSubcontainers)
{
foreach (var name in subcont.Elements("name"))
{
Console.WriteLine(name.Value);
}
}
Console.ReadKey();