c# - 在现有属性之后添加属性

标签 c# xml attributes addition

我试图在现有属性之后添加一个属性,但我真的不明白。

XML 格式。

<table name="spelers">
  <column name="ID">4565</column>
  <column name="Voornaam">Ivo</column>
  <column name="Achternaam">Dolman</column>
  <column name="SchoolID">5811</column>
</table>

如果是的话我会尝试做什么

column name="Tussenvoegsel">

不存在则添加在“Voornaam”后面

<table name="spelers">
  <column name="ID">4565</column>
  <column name="Voornaam">Ivo</column>
  <column name="Tussenvoegsel"></column>
  <column name="Achternaam">Dolman</column>
  <column name="SchoolID">5811</column>
</table>

我的代码

XmlDocument doc = new XmlDocument();
doc.Load(@"C:\Users\-\Desktop\Niuew\spelersOUD.xml");

XmlElement root = doc.CreateElement("Voornaam");
XmlElement id = doc.CreateElement("Tussenvoegsel");
id.SetAttribute("Tussenvoegsel", "");
root.AppendChild(id);
doc.Save(@"C:\Users\-\Desktop\Niuew\output.xml"); 

非常感谢帮助,我可能对元素和节点、根感到困惑......

最佳答案

您需要:

  • 使用 SelectSingleNode 确定要插入的节点,例如
  • 创建一个新元素(就像您对 id 所做的那样)
  • 使用InsertAfter在您想要添加的位置的父级上 - 即 <table> ,根节点

类似于

var table = doc.DocumentElement;
var voornaam = (XmlElement)table.SelectSingleNode("*[@name='Voornaam']");
XmlElement newElement = doc.CreateElement("column");
newElement.SetAttribute("name", "Tussenvoegsel");
table.InsertAfter(newElement, voornaam);

关于c# - 在现有属性之后添加属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48669255/

相关文章:

c# - 实现一组基类——我是否需要在派生类中进行如此多的向下转换?

ruby - 使用 Nokogiri::XML::Builder 忽略空节点的最干净的方法是什么

java - NameNode 地址的 URI 无效

基于 child 和/或孙子的 parent 的 XML 选择

python - 按名称初始化、设置和获取自定义对象属性的 Pythonic 方法是什么?

jquery添加子元素属性

c# - Inno Setup - 具有依赖项的外部 .NET DLL

c# - Int32.Equals 与 '==' 运算符

c# - Request.QueryString[] 对比 Request.Query.Get() 对比 HttpUtility.ParseQueryString()

python - python对象的sqlalchemy from_statement动态属性