1

プログラムで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); 
            }

どんな助けでも大歓迎です!

4

1 に答える 1

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
}
于 2012-05-11T07:31:03.330 に答える