gpt4 book ai didi

linq-to-xml - Linq to XML - 删除一个节点并在同一位置添加一个新节点

转载 作者:行者123 更新时间:2023-12-04 16:56:58 25 4
gpt4 key购买 nike

我有一个 XDocument 并且必须删除一个节点并在一些操作后再次添加相同的节点(我的 xelement 节点很复杂并且也有内部节点)。有没有人有一个很好的方法来做到这一点,因为我的新操作节点被添加到 xmldocument 的最后。任何代码片段将不胜感激。

最佳答案

如果我理解正确,这应该可以帮助您做到这一点。

太阳能系统.xml:

<?xml version="1.0" encoding="UTF-8"?>
<SolarSystem>
<Planets>
<Planet Id="1">
<Name>Mercury</Name>
</Planet>
<Planet Id="2">
<Name>Venus</Name>
</Planet>
<Planet Id="3">
<Name>Earth</Name>
</Planet>
</Planets>
</SolarSystem>

代码找到了 <Planet> Mercurial ,向其添加一个额外元素,将其移除,然后在 <Planets> 的末尾重新插入它收藏。
XDocument SolarSystem = XDocument.Load(Server.MapPath("SolarSystem.xml"));
IEnumerable<XElement> Planets = SolarSystem.Element("SolarSystem").Element("Planets").Elements("Planet");

// identify and change Mercury
XElement Mercury = Planets.Where(p => p.Attribute("Id").Value == "1").FirstOrDefault();
Mercury.Add(new XElement("YearLengthInDays", "88"));

// remove Mercury from current position, and add back in at the end
Mercury.Remove();
Planets.Last().AddAfterSelf(Mercury);

// save it as new file
SolarSystem.Save(Server.MapPath("NewSolarSystem.xml"));

这使:
<?xml version="1.0" encoding="UTF-8"?>
<SolarSystem>
<Planets>
<Planet Id="2">
<Name>Venus</Name>
</Planet>
<Planet Id="3">
<Name>Earth</Name>
</Planet>
<Planet Id="1">
<Name>Mercury</Name>
<YearLengthInDays>88</YearLengthInDays>
</Planet>
</Planets>
</SolarSystem>

关于linq-to-xml - Linq to XML - 删除一个节点并在同一位置添加一个新节点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1644996/

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