【问题标题】:Inserting and saving xml using Linq to XML使用 Linq to XML 插入和保存 xml
【发布时间】:2011-09-13 16:50:13
【问题描述】:

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

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

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

我应该如何在节点 First 中插入一个 XML 节点并使用 LINQ-to-XML 保存它?

【问题讨论】:

    标签: c# linq xml-parsing linq-to-xml


    【解决方案1】:

    首先您需要找到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"));
    

    【讨论】:

    • @Bhaskar K - 我刚看到答案标记,然后就不见了? :(
    • 有时如果节点“First”可能不存在,我该如何检查并创建该节点,然后在其下创建子节点。
    • 哎呀,对不起,我现在接受它:),但如果你也能回答我上面的问题,那就太好了。 :)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-20
    • 2010-11-18
    • 1970-01-01
    相关资源
    最近更新 更多