gpt4 book ai didi

xml - 在最后一个特定节点/元素之后插入 XML 元素

转载 作者:数据小太阳 更新时间:2023-10-29 02:04:08 27 4
gpt4 key购买 nike

我想在 XML 中的最后一个子元素之后添加元素。但是我得到了一个错误。

<XML ID="Microsoft Search Thesaurus">
<thesaurus xmlns="x-schema:tsSchema.xml">
<diacritics_sensitive>0</diacritics_sensitive>
<expansion>
<sub>Internet Explorer</sub>
<sub>IE</sub>
<sub>IE5</sub>
</expansion>
<replacement>
<pat>NT5</pat>
<pat>W2K</pat>
<sub>Windows 2000</sub>
</replacement>
<expansion>
<sub>run</sub>
<sub>jog</sub>
</expansion>
<expansion>
<sub>home</sub>
<sub>house</sub>
</expansion>
</thesaurus>
</XML>

我的代码如下,我在调试代码时遇到了这个错误。

InvalidOperationException was unhandled.

Sequence contains no elements.

XDocument doc = XDocument.Load("tseng.xml");  //load the xml file.
IEnumerable<XElement> MemberList = doc.Element("XML").Elements("thesaurus");
var Member = new XElement("expansion",
new XElement("sub", "home"),
new XElement("sub", "house")
);
MemberList.Last().AddAfterSelf(Member); //add node to the last element.
doc.Save("tseng.xml");

此错误针对特定行:

MemberList.Last().AddAfterSelf(Member);

我不知道这段代码有什么问题。如何在最后一个 <expansion> 之后添加元素节点到我的 XML 文件?

你能帮我解决这个问题吗?谢谢。

最佳答案

<thesaurus>元素有一个 xmlns指定命名空间的属性,因此您需要将命名空间添加到所有元素名称中。另外,您应该使用 Add而不是 AddAfterSelf如果你想要新的 <expansion>元素出现在 <thesaurus> 中而不是在它之后。

XNamespace ns = "x-schema:tsSchema.xml";
IEnumerable<XElement> MemberList = doc.Element("XML").Elements(ns + "thesaurus");
var Member = new XElement(ns + "expansion",
new XElement(ns + "sub", "home"),
new XElement(ns + "sub", "house"));
MemberList.Last().Add(Member); //add node to the last element.

关于xml - 在最后一个特定节点/元素之后插入 XML 元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8963957/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com