在现有属性之后添加属性
Add attribute after existing one
我想在现有属性之后添加一个属性,但我真的不明白。
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);
如果您想在 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");
我想在现有属性之后添加一个属性,但我真的不明白。
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);
如果您想在 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");