如何将 XElement 添加到文档中,避免出现“结构错误的文档”错误?

发布于 2024-08-19 02:52:33 字数 688 浏览 4 评论 0原文

        // Remove element with ID of 1
        var userIds = from user in document.Descendants("Id")
                       where user.Value == "1"
                       select user;

        userIds.Remove();

        SaveAndDisplay(document);

        // Add element back
        var newElement = new XElement("Id", "0", 
            new XElement("Balance", "3000"));
        document.Add(newElement);

        SaveAndDisplay(document);

添加元素后块是问题所在。当它到达添加时,它指出:

此操作将创建一个 文档结构不正确。

我犯了什么愚蠢的错误?

编辑:

是的,我是作为XDocument而不是XElement来阅读的。关于何时支持其中之一有什么建议吗?

        // Remove element with ID of 1
        var userIds = from user in document.Descendants("Id")
                       where user.Value == "1"
                       select user;

        userIds.Remove();

        SaveAndDisplay(document);

        // Add element back
        var newElement = new XElement("Id", "0", 
            new XElement("Balance", "3000"));
        document.Add(newElement);

        SaveAndDisplay(document);

The add element back block is the problem. As when it gets to the add it states:

This operation would create an
incorrectly structured document.

What stupid mistake am I making?

Edit:

Yes, I was reading as an XDocument, not XElement. Any advice on when to favour one or the other?

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

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

发布评论

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

评论(2

夜访吸血鬼 2024-08-26 02:52:33

您似乎正在尝试添加一个新元素作为文档根目录的子元素。如果是这样,那么您需要将 Add 语句更改为以下内容。

var newElement = new XElement("Id", "0", new XElement("Balanace", "3000"));
document.Root.Add(newElement);

直接添加到文档中会添加另一个根元素,这违反了 XML 结构。

It looks like you are trying to add a new element as a child of your document's root. If so, then you need to change your Add statement to the following.

var newElement = new XElement("Id", "0", new XElement("Balanace", "3000"));
document.Root.Add(newElement);

Adding directly to the document adds another root element, which violates the XML structure.

欲拥i 2024-08-26 02:52:33

您实际上正在尝试添加这些对象不喜欢的新根元素。我假设 document 是 XDocument?通过将其添加到根节点,将其进一步放置在根节点内。使用:

document.Root.Add(newElement)
document.FirstNode.Add(newElement)

You're effectively trying to add a new root element, which these objects don't like. I assume document is an XDocument? Place it further inside the root node, by adding it to the root node. Use:

document.Root.Add(newElement) or
document.FirstNode.Add(newElement)

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