使用 C# 在 XML 中的特定位置追加
Appending at specific place in XML with c#
我有一个 XML 这样的文件
<?xml version="1.0" encoding="utf-8"?>
<MY_COMPUTER>
<HARDWARE uid="" update="" functions="" />
<SOFTWARE>
<GAMES uid="" update="" functions="" url="">
<GAME1 Game1-Attribute1="" />
<GAME2 Game2-Attribute1="" Game2-Attribute2="" Game2-Attribute3="" Game2-Attribute4="" />
<GAME3 Game3-Attribute1="" Game3-Attribute2="" Game3-Attribute3=""/>
<GAME4 Game4-Attribute1="" Game4-Attribute2=""/>
</GAMES>
</SOFTWARE>
</MY_COMPUTER>
我正在尝试将新的软件类型添加到此 xml 文件中,例如浏览器,浏览器将与游戏相同,它将具有浏览器 1、浏览器 2,并且一些浏览器将具有属性。我用过这个
string filePath = "test.xml";
XElement root = XElement.Load(filePath, LoadOptions.PreserveWhitespace);
root.Add(
new XElement("BROWSER",
new XAttribute("uid",""), new XAttribute("update", ""),
new XElement("BROWSER2"),
new XElement("BROWSER3"),
new XElement("BROWSER4"),
)
);
root.Save(filePath, SaveOptions.DisableFormatting);
但是有了这个代码,它在软件下附加了这个,我知道我可能犯了一个非常大的初学者错误,但我无法修复它,有人可以帮助我吗?我也在 Whosebug 上查了很多关于这个的问题,但我仍然无法解决。人们说有很多方法,比如使用 LINQ 或 stream 我不知道该使用哪个,但这个文件不会很大,所以我只需要一种可行的方法
谢谢
在软件元素之后添加这个 xml 的原因是您将它添加到 root
元素本身 (root.Add
)。
如果你想将它添加到软件元素中,你应该相应地修改你的代码。
找到所需的元素并改为调用其 Add
方法。
var softwareElement = root.Descendants("SOFTWARE").First();
softwareElement.Add(
new XElement("BROWSER",
new XAttribute("uid", ""), new XAttribute("update", ""),
new XElement("BROWSER2"),
new XElement("BROWSER3"),
new XElement("BROWSER4")
)
);
然后像以前一样保存所有 xml。
root.Save(filePath, SaveOptions.DisableFormatting);
我有一个 XML 这样的文件
<?xml version="1.0" encoding="utf-8"?>
<MY_COMPUTER>
<HARDWARE uid="" update="" functions="" />
<SOFTWARE>
<GAMES uid="" update="" functions="" url="">
<GAME1 Game1-Attribute1="" />
<GAME2 Game2-Attribute1="" Game2-Attribute2="" Game2-Attribute3="" Game2-Attribute4="" />
<GAME3 Game3-Attribute1="" Game3-Attribute2="" Game3-Attribute3=""/>
<GAME4 Game4-Attribute1="" Game4-Attribute2=""/>
</GAMES>
</SOFTWARE>
</MY_COMPUTER>
我正在尝试将新的软件类型添加到此 xml 文件中,例如浏览器,浏览器将与游戏相同,它将具有浏览器 1、浏览器 2,并且一些浏览器将具有属性。我用过这个
string filePath = "test.xml";
XElement root = XElement.Load(filePath, LoadOptions.PreserveWhitespace);
root.Add(
new XElement("BROWSER",
new XAttribute("uid",""), new XAttribute("update", ""),
new XElement("BROWSER2"),
new XElement("BROWSER3"),
new XElement("BROWSER4"),
)
);
root.Save(filePath, SaveOptions.DisableFormatting);
但是有了这个代码,它在软件下附加了这个,我知道我可能犯了一个非常大的初学者错误,但我无法修复它,有人可以帮助我吗?我也在 Whosebug 上查了很多关于这个的问题,但我仍然无法解决。人们说有很多方法,比如使用 LINQ 或 stream 我不知道该使用哪个,但这个文件不会很大,所以我只需要一种可行的方法 谢谢
在软件元素之后添加这个 xml 的原因是您将它添加到 root
元素本身 (root.Add
)。
如果你想将它添加到软件元素中,你应该相应地修改你的代码。
找到所需的元素并改为调用其 Add
方法。
var softwareElement = root.Descendants("SOFTWARE").First();
softwareElement.Add(
new XElement("BROWSER",
new XAttribute("uid", ""), new XAttribute("update", ""),
new XElement("BROWSER2"),
new XElement("BROWSER3"),
new XElement("BROWSER4")
)
);
然后像以前一样保存所有 xml。
root.Save(filePath, SaveOptions.DisableFormatting);