gpt4 book ai didi

c# - 将 XElement 添加到特定位置的另一个 XElement

转载 作者:太空宇宙 更新时间:2023-11-03 21:30:23 25 4
gpt4 key购买 nike

请考虑这个 XML:

<Employees>
<Person>
<ID>1000</ID>
<Name>Nima</Name>
<LName>Agha</LName>
</Person>
<Person>
<ID>1002</ID>
<Name>Ligha</Name>
<LName>Ligha</LName>
</Person>
<Person>
<ID>1003</ID>
<Name>Jigha</Name>
<LName>Jigha</LName>
</Person>
</Employees>

这是 XElement 变量的内容。现在我有另一个包含此内容的 XElement 变量:

<Person>
<ID>1001</ID>
<Name>Aba</Name>
<LName>Aba</LName>
</Person>

我想将此 XEelemnt 变量添加到特定位置的第一个 XElement(例如作为第二个 Person 标记)。我该怎么做?

谢谢

最佳答案

首先你需要加载xml字符串,其次你得到你想要插入xml的位置,然后插入新的xml。这是一个如何做到这一点的例子。

var reader = new StringReader(@"<Employees>
<Person>
<ID>1000</ID>
<Name>Nima</Name>
<LName>Agha</LName>
</Person>
<Person>
<ID>1002</ID>
<Name>Ligha</Name>
<LName>Ligha</LName>
</Person>
<Person>
<ID>1003</ID>
<Name>Jigha</Name>
<LName>Jigha</LName>
</Person>
</Employees>");
var xdoc = XDocument.Load(reader);
xdoc.Element("Employees").
Elements("Person").
First().
AddAfterSelf(new XElement("Person",
new XElement("ID", 1001),
new XElement("Name", "Aba"),
new XElement("LName", "Aba")));

var sb = new StringBuilder();
var writer = new StringWriter(sb);
xdoc.Save(writer);
Console.WriteLine(sb);

更新

如果要按索引插入,先获取元素即可。例如你想插入第二个位置,那么你需要得到第一个索引(index = 0)。

var xdoc = XDocument.Load(reader);
xdoc.Element("Employees").
Elements("Person").
ElementAt(0).
AddAfterSelf(new XElement("Person",
new XElement("ID", 1001),
new XElement("Name", "Aba"),
new XElement("LName", "Aba")));

PS:为了简单起见,我没有添加无效性检查。

关于c# - 将 XElement 添加到特定位置的另一个 XElement,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24623391/

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