c# - 在 C# 中向 xml 文件添加元素

标签 c# xml file

我有一个格式如下的 XML 文件:

<Snippets>
  <Snippet name="abc">
    <SnippetCode>
      testcode1
    </SnippetCode>
  </Snippet>

  <Snippet name="xyz">
    <SnippetCode>      
     testcode2
    </SnippetCode>
  </Snippet>

  ...

</Snippets>

我可以使用 XDocument 成功地加载元素,但是我在添加新元素时遇到了问题(有很多功能,我尝试过的大部分功能都不适合我)。这将如何完成?新元素将包含片段名称标签和片段代码标签。我以前的方法是打开文件,然后使用字符串手动创建元素,这虽然可行,但这是一个非常糟糕的主意。

我尝试过的:

XDocument doc = XDocument.Load(spath);
XElement root = new XElement("Snippet");
root.Add(new XElement("name", "name goes here"));
root.Add(new XElement("SnippetCode", "SnippetCode"));
doc.Element("Snippets").Add(root);
doc.Save(spath);

结果是这样的:

<Snippet>
    <name>name goes here</name>
    <SnippetCode>
    code goes here
    </SnippetCode>
</Snippet>

它工作正常,只是名称标签生成不正确。应该是

<Snippet name="abc"> 

但我无法正确生成它。

最佳答案

你很接近,但你希望 name 是 XAttribute而不是 XElement :

 XDocument doc = XDocument.Load(spath); 
 XElement root = new XElement("Snippet"); 
 root.Add(new XAttribute("name", "name goes here")); 
 root.Add(new XElement("SnippetCode", "SnippetCode")); 
 doc.Element("Snippets").Add(root); 
 doc.Save(spath); 

关于c# - 在 C# 中向 xml 文件添加元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7931650/

相关文章:

需要文件 io 的 c++ 跨平台方法

java - 当文件存在且无法删除时如何测试方法异常?

c# - 关于单例的非静态成员的问题(C#)

c# - 在 Visual Studio 2008 中将项目更改为 Web 应用程序

c# - XML 节点编辑。

xml - 寻找XPath表达式生成器

android - 我怎样才能在android中为textview实现这个自定义形状?

matlab - 从 Matlab 编辑器恢复较长的最近文件列表

C# 实用功能静态方法/静态类/单例模式

c# - 将匿名类型转换为数组或数组列表。可以做吗