【问题标题】:How to add a section after a specific section in a XML file ,c#如何在 XML 文件中的特定部分之后添加一个部分,c#
【发布时间】:2013-12-09 23:24:23
【问题描述】:

我有这个 XML 文件:

<a>
   <b>
   <name>Ion</name>
   </b>
   <c>
     <article>A10</article>
     <price>100</price>
   </c>
   //here I want to add a new section
   <f>....</f>
   </b>
</a>

我想添加部分:

 <d>
     <info1>test</info1>
     <info2>test 2</info2>
 </d>

&lt;c&gt; 部分之后,在''之间。

我在 C# 中编写了这段代码来添加定义和添加部分 d:

XDocument doc = XDocument.Load(file.Directory + "//" + file.Name);
XElement newElement = new XElement("d",
                                       new XElement("info1", txtInfo1.Text),
                                       new XElement("info2", txtInfo2.Text)
                    );
doc.Element("a").Add(newElement); 

但是使用这段代码,我在&lt;a&gt; 标记中添加了&lt;d&gt; 部分,我想在&lt;c&gt; 部分之后添加(&lt;a&gt;&lt;b&gt;&lt;c&gt;...&lt;/c&gt;&lt;d&gt;...&lt;d/&gt;&lt;f&gt;...&lt;/f&gt;&lt;/b&gt;&lt;/a&gt;

【问题讨论】:

  • 你有结束&lt;/b&gt;标签但是没有开始标签

标签: c# xml winforms


【解决方案1】:
 string path = file.Directory + "//" + file.Name;
 XDocument doc = XDocument.Load(path);
 doc.Root.Element("b").Add(newElement); 
 doc.Save(path); // save document

更新(在cf 之间添加):

 doc.Root.Element("b").Element("c").AddAfterSelf(newElement);

【讨论】:

  • 谢谢。它工作正常,但我忘记了一些事情。在 部分之后,我还有一个 部分。我想在 之间添加我的新部分。
  • @user1577242 我已经更新了答案 - 使用 AddAfterSelf 方法(向当前元素添加兄弟)而不是 Add(向当前元素添加子元素)
  • 完美运行!谢谢
【解决方案2】:

看起来您将其添加到错误的标签中。根据您希望将其添加到 b 的问题:

doc.Root.Element("b").Add(newElement);

【讨论】:

  • 我添加了 Root - 看起来你匆忙错过了 :)
  • @lazyberezovsky,是的。非常感谢! Element 方法是分层约束的。我猜另一种方式你必须使用Descendants,但几乎可以肯定没有必要。
【解决方案3】:

而不是doc.Element("a").Add(newElement);

试试这个:

doc.Root.Element("b").Add(newElement);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-07-03
    • 1970-01-01
    • 2013-06-08
    • 2015-10-20
    • 2023-03-27
    • 2021-04-01
    • 2020-04-09
    • 2015-09-07
    相关资源
    最近更新 更多