2017-06-22 90 views
1

AppendChild使用C#将节点添加到XML文件,并且已经碰壁。我似乎无法添加多个节点。如何使用C#和XmlDocument多次AppendChild?

private void saveBtn_Click(object sender, EventArgs e) 
{ 
    int listCount = listView1.Items.Count; 



    XmlDocument xmlDocNew = new XmlDocument(); 
    xmlDocNew.Load(@"D:\test.xml"); 
    XmlNodeList ticketNodes = xmlDocNew.SelectNodes(@"//objects/ticket"); 
    int ticketCount = ticketNodes.Count; 
    XmlElement mapElement = (XmlElement)xmlDocNew.SelectSingleNode(@"//objects[last()]"); 

    var newRec = xmlDocNew.CreateElement("ticket"); 
    newRec.SetAttribute("number", conBox.Text); 
    mapElement.AppendChild(newRec); 

    XmlNode node = xmlDocNew.SelectSingleNode(@"//objects/ticket[@number='" + conBox.Text + "']"); 


    XmlElement objectRec = xmlDocNew.CreateElement("object"); 
    newRec.AppendChild(objectRec); 

    xmlDocNew.Save(@"D:/test.xml"); 

} 

即使我用newRec.AppendChild(objectRec)的两倍,或者如果我包含在它的一个或foreach循环,我只在我的XML以下告终。

<objects> 
    <ticket> 
     <object/> 
    </ticket> 
</objects> 

任何帮助,非常感谢!

回答

1

您还需要调用的createElement多次:

for (int i = 0; i < 10; i++) 
{ 
    XmlElement objectRec = xmlDocNew.CreateElement("object"); 
    objectRec.InnerText = i.ToString(); 
    newRec.AppendChild(objectRec); 
} 

当您重新使用它就像一个移动处理相同的元素。请参阅:https://msdn.microsoft.com/en-us/library/system.xml.xmlnode.appendchild(v=vs.110).aspx

+0

好的,谢谢,我已经试过了,发现它可以工作,但是我不知道需要多少个节点。它基于从导入的文件填充的列表视图。那么如何为每个项目创建一个编号的objectRec? –

+0

编辑anser:只需在循环内调用createElement即可。 –

+0

我确信我曾尝试过,但显然不是这样。谢谢你的帮助! –