首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >LINQ to XML (动态XML)

LINQ to XML (动态XML)
EN

Stack Overflow用户
提问于 2010-09-18 01:47:47
回答 2查看 389关注 0票数 3

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

代码语言:javascript
复制
<?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>
EN

回答 2

Stack Overflow用户

发布于 2010-09-18 01:50:31

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

代码语言:javascript
复制
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")));
票数 1
EN

Stack Overflow用户

发布于 2012-12-30 22:29:35

代码语言:javascript
复制
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()
            };
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3737664

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档