我们如何捕获 xml 中的嵌套元素?

问题描述 投票:0回答:1

我正在尝试使用标签子容器从以下 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 的不同列中

c# xml interop excel-interop
1个回答
0
投票

以下是如何使用 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();
© www.soinside.com 2019 - 2024. All rights reserved.