使用 Linq to XML 插入和保存 xml

发布于 2024-11-15 00:51:51 字数 293 浏览 2 评论 0原文

如果我有一个如下所示的 XML 文件 settings.xml

<Root>
    <First>
    </First>
</Root>

我首先使用 XDocument settings = XDocument.Load("settings.xml") 加载 XML

我应该如何插入 XML节点 First 内的节点并使用 LINQ-to-XML 保存它?

If i have an XML file settings.xml like below

<Root>
    <First>
    </First>
</Root>

I Load the XML first using XDocument settings = XDocument.Load("settings.xml")

How should I insert a XML node inside the node First and save it using LINQ-to-XML?

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

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

发布评论

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

评论(1

终难愈 2024-11-22 00:51:51

首先,您需要找到 First 元素。然后您可以向其中添加其他元素和属性。
在 xml 中查找元素的方法不止一种:ElementsDescendantsXPathSelectElement 等。

var firstElement = settings.Descendants("First").Single();
firstElement.Add(new XElement("NewElement"));

settings.Save(fileName);
// or
var newXml = settings.ToString();

输出:

<Root>
  <First>
    <NewElement />
  </First>
</Root>

或具有属性的元素:

firstElement.Add(
   new XElement("NewElement", new XAttribute("NewAttribute", "TestValue")));

输出:

<Root>
  <First>
    <NewElement NewAttribute="TestValue" />
  </First>
</Root>

[编辑]奖励问题的答案。如果第一个元素不存在而我想创建它该怎么办:

var root = settings.Element("Root");
var firstElement = root.Element("First");
if (firstElement == null)
{
    firstElement = new XElement("First");
    root.Add(firstElement);
}
firstElement.Add(new XElement("NewElement"));

First you need to find the First element. Then you can add other elements and attributes to it.
There are more than one way to find an element in the xml: Elements, Descendants, XPathSelectElement, etc.

var firstElement = settings.Descendants("First").Single();
firstElement.Add(new XElement("NewElement"));

settings.Save(fileName);
// or
var newXml = settings.ToString();

Output:

<Root>
  <First>
    <NewElement />
  </First>
</Root>

Or element with attribute:

firstElement.Add(
   new XElement("NewElement", new XAttribute("NewAttribute", "TestValue")));

Output:

<Root>
  <First>
    <NewElement NewAttribute="TestValue" />
  </First>
</Root>

[Edit] The answer to the bonus question. What to do if the first element does not exist and I want to create it:

var root = settings.Element("Root");
var firstElement = root.Element("First");
if (firstElement == null)
{
    firstElement = new XElement("First");
    root.Add(firstElement);
}
firstElement.Add(new XElement("NewElement"));
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文