处理嵌套 XML

发布于 2024-09-07 10:11:25 字数 790 浏览 3 评论 0原文

寻找使用 Linq to XML 转换父子关系的最佳实践

在这种情况下,我有一个包含 Group[] 的 Domain 类,

我想要做的是迭代 d (域)中的 Groups[] 并创建 XElements一击。

        XElement _customers = new XElement("Domains",
                                from c in d
                                orderby c.id //descending  
                                select new XElement("Domain",
                      // something like-->  new XElement("Groups", c.id),
                      // loop through d.Group and add new XElement...
                                    new XElement("id", c.id),
                                    new XAttribute("name", c.name),
                                    new XElement("ismanaged", c.IsManaged.ToString()
                                    )));

提前致谢

looking for best practice in converting a parent-child relationship using Linq to XML

In this case i have a Domain class which contains a Group[]

What I want to do is iterate over the Groups[] in d (domains) and create the XElements in one hit.

        XElement _customers = new XElement("Domains",
                                from c in d
                                orderby c.id //descending  
                                select new XElement("Domain",
                      // something like-->  new XElement("Groups", c.id),
                      // loop through d.Group and add new XElement...
                                    new XElement("id", c.id),
                                    new XAttribute("name", c.name),
                                    new XElement("ismanaged", c.IsManaged.ToString()
                                    )));

Thanks in advance

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

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

发布评论

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

评论(1

困倦 2024-09-14 10:11:25

您可以使用嵌套查询来执行此操作。

假设您的类如下所示(稍微简化一下):

public class Domain
{
    public string Name;
    public List<Group> Groups;
}

public class Group
{
    public string GroupId;
}

您可以像这样一次性创建 LINQ to XML 表示形式:

XElement domains = new XElement("Domains",
    from domain in domains
    select new XElement("Domain",
        new XAttribute("name", domain.Name),
        from group in domain.Groups
        select new XElement("Group",
            new XAttribute("id", group.GroupId))
    ));

“技巧”是,如果您将 IEnumerable 作为参数之一传递给 XElement 构造函数,构造函数将枚举它并分别添加每个项目。

You can use nested queries to do this.

Assuming your classes look like this (simplifying a little bit):

public class Domain
{
    public string Name;
    public List<Group> Groups;
}

public class Group
{
    public string GroupId;
}

You can create LINQ to XML representation in one go like this:

XElement domains = new XElement("Domains",
    from domain in domains
    select new XElement("Domain",
        new XAttribute("name", domain.Name),
        from group in domain.Groups
        select new XElement("Group",
            new XAttribute("id", group.GroupId))
    ));

The "trick" is that if you pass an IEnumerable as one of the parameters to the XElement constructor, the constructor will enumerate over it and add each item separately.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文