我正在尝试以编程方式写入xml。
在尝试实现这样的目标时: -
<module>
<moduleCode>EIGA501</moduleCode>
<moduleTitle>Introduction to 3D Graphics</moduleTitle>
<credits>15</credits>
<semester>1</semester>
<assessmentDetails>
<assessment>
<assessmentName>Coursework1</assessmentName>
<assessmentType>Coursework</assessmentType>
<assessmentWeighting>25</assessmentWeighting>
</assessment>
<assessment>
<assessmentName>Coursework2</assessmentName>
<assessmentType>Coursework</assessmentType>
<assessmentWeighting>35</assessmentWeighting>
</assessment>
<assessment>
<assessmentName>Exam</assessmentName>
<assessmentType>Exam</assessmentType>
<assessmentWeighting>40</assessmentWeighting>
</assessment>
</assessmentDetails>
<school>ECS</school>
</module>
如果注意到assesmentDetails节点格式精美,我实际上是这样做的:
<module>
<moduleCode>someCode</moduleCode>
<moduleTitle>someCourseTitle</moduleTitle>
<credits>someCredits</credits>
<semester>2</semester>
<assesmentDetails>
<assesment>
</assesment>
<assesment>
</assesment>
<assesment>
<assesmentName>AssesmentName1AssesmentName2</assesmentName>
<assesmentType>AssesmentType1AssesmentType2</assesmentType>
<assesmentWeighting>12</assesmentWeighting>
</assesment>
</assesmentDetails>
<school>ECS</school>
</module>
我正在成功构建xml的其余部分,你可以看到,我正在使用for循环来尝试“动态”构建评估部分。如图所示:
for (int i = 0; i < textboxComputer.Count; i++)
{
XmlElement newAssesment = document.CreateElement("assesment");
newAssesmentD.AppendChild(newAssesment);
TextBox tb1 = (TextBox)textboxComputer[i];
TextBox tb2 = (TextBox)textboxP[i];
TextBox tb3 = (TextBox)textboxPercent[i];
XmlText assesmentN = document.CreateTextNode(tb1.Text);
XmlText assesmentT = document.CreateTextNode(tb2.Text);
XmlText assesmentW = document.CreateTextNode(tb3.Text);
newAssesment.AppendChild(newAssesmentN);
newAssesment.AppendChild(newAssesmentT);
newAssesment.AppendChild(newAssesmentW);
newAssesmentN.AppendChild(assesmentN);
newAssesmentT.AppendChild(assesmentT);
newAssesmentW.AppendChild(assesmentW);
}
任何帮助将不胜感激!
答案 0 :(得分:0)
如果您可以使用LinqToXml,则可以这种方式添加节点。
XElement a = new XElement("assesment");
a.Add(new XElement("assesmentName", "name text");
您可以找到这样的assesmentDetails
节点,
XElement root = XElement.Load(file);
XElement module = root.Elements("module")
.FirstOrDefault(x => x.Element("moduleCode").Value == "code");
if(null != module)
{
XElement assesmentDetails = module.Element("assesmentDetails");
assesmentDetails.Add(a); // <-- Add your new assesment
}