在现有属性之后添加属性

时间:2018-02-07 16:56:13

标签: c# xml attributes add

我正在尝试在现有属性之后添加属性,但我真的不明白。

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>

我尝试做什么,如果

  

列名=“Tussenvoegsel”&gt;

不存在是在“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"); 

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

2 个答案:

答案 0 :(得分:3)

你需要:

  • 使用struct objectv1 { matrix<float, 0, 1 > obj_descriptor; string person_name; matrix<rgb_pixel> p_obj_chip; string notes; }; 标识要插入的节点,例如
  • 创建一个新元素(就像您对std::vector<objectv1> object_deteails; 所做的那样)
  • 在您希望添加的上使用SelectSingleNode - 即id,根节点

这样的东西
InsertAfter

答案 1 :(得分:1)

如果您想在Voornaam之后添加节点Tussenvoegsel,只有它不存在,您应该这样做:

        XmlDocument doc = new XmlDocument();
        doc.Load(@"C:\Users\-\Desktop\Niuew\spelersOUD.xml");
        var table = doc.ChildNodes[0];
        var voornaam = (XmlElement)table.SelectSingleNode("*[@name='Voornaam']");
        var tussenvoegsel = (XmlElement)table.SelectSingleNode("*[@name='Tussenvoegsel']");
        if (tussenvoegsel == null)
        {
            XmlElement newElement = doc.CreateElement("column");
            newElement.SetAttribute("name", "Tussenvoegsel");
            table.InsertAfter(newElement, voornaam);
        }
        doc.Save(@"C:\Users\-\Desktop\Niuew\output.xml");