LINQ to XML(动态 XML)

发布于 2024-09-24 02:00:51 字数 1231 浏览 2 评论 0原文

我有一个 XML 文件,它具有类似的结构,您可以在下面看到: 我想使用 LINQ to XML 选择标题和子项。我遇到的困难:有时一个子项可能只有一个,有时可能有 20 个子项,我需要将它们添加到 List中。

<?xml version="1.0"?>
<items>
    <item>
        <title>Name of the title</title>
        <subitem>Test</subitem>
        <subitem1>Test</subitem1>
        <subitem2>Test</subitem2>
        <subitem3>Test</subitem3>
        <subitem4>Test</subitem4>
        <subitem5>Test</subitem5>
    </item>
    <item>
        <title>Name of the title</title>
        <subitem>Test</subitem>
        <subitem1>Test</subitem1>
        <subitem2>Test</subitem2>
        <subitem3>Test</subitem3>
    </item>
    <item>
        <title>Name of the title</title>
        <subitem>Test</subitem>
        <subitem1>Test</subitem1>
    </item>
</items>

I have an XML file which has kind of a similar structure that you can see below:
I would like to select title and subitems using LINQ to XML. The difficulties that I have: sometimes a subitem can be just one and sometimes it can be 20 subitems, and I need to add them to List<string>.

<?xml version="1.0"?>
<items>
    <item>
        <title>Name of the title</title>
        <subitem>Test</subitem>
        <subitem1>Test</subitem1>
        <subitem2>Test</subitem2>
        <subitem3>Test</subitem3>
        <subitem4>Test</subitem4>
        <subitem5>Test</subitem5>
    </item>
    <item>
        <title>Name of the title</title>
        <subitem>Test</subitem>
        <subitem1>Test</subitem1>
        <subitem2>Test</subitem2>
        <subitem3>Test</subitem3>
    </item>
    <item>
        <title>Name of the title</title>
        <subitem>Test</subitem>
        <subitem1>Test</subitem1>
    </item>
</items>

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

猫性小仙女 2024-10-01 02:00:51

解决方案(包括获取标题)是:

XDocument yourXDocument = XDocument.Load(yourXmlFilePath);
IEnumerable<Tuple<XElement, IEnumerable<XElement>>> yourSubItems =
    yourXDocument.Root.Descendants()
                 .Where(xelem => xelem.Name == "title")
                 .Select(xelem => new Tuple<XElement, IEnumerable<XElement>>(xelem, xelem.Parent.Elements().Where(subelem => subelem.Name.LocalName.StartsWith("subitem")));

The solution, including getting the titles, is:

XDocument yourXDocument = XDocument.Load(yourXmlFilePath);
IEnumerable<Tuple<XElement, IEnumerable<XElement>>> yourSubItems =
    yourXDocument.Root.Descendants()
                 .Where(xelem => xelem.Name == "title")
                 .Select(xelem => new Tuple<XElement, IEnumerable<XElement>>(xelem, xelem.Parent.Elements().Where(subelem => subelem.Name.LocalName.StartsWith("subitem")));
小帐篷 2024-10-01 02:00:51
XDocument xdoc = XDocument.Load(path_to_xml);
var query = from i in xdoc.Descendants("item")
            select new
            {
                Title = (string)i.Element("title"),
                Subitems = i.Elements()
                            .Where(e => e.Name.LocalName.StartsWith("subitem"))
                            .Select(e => (string)e)
                            .ToList()
            };
XDocument xdoc = XDocument.Load(path_to_xml);
var query = from i in xdoc.Descendants("item")
            select new
            {
                Title = (string)i.Element("title"),
                Subitems = i.Elements()
                            .Where(e => e.Name.LocalName.StartsWith("subitem"))
                            .Select(e => (string)e)
                            .ToList()
            };
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文