0

これはばかげた質問のように思えるかもしれませんが、msdnのドキュメントを確認し、このサイトをしばらく検索しようとしました。残念ながら、その方法を本当に理解することができませんでした。

2番目または3番目の子の後にノードを挿入したいと思います。私のXMLのメインコンテンツは孫の中にあり、root.insertafterを使用すると、最初の子の直後に配置されます。

XML:

<myCourse>
  <courseName>BEng Mobile and Web Computing</courseName>
  <courseStructure>
    <module>
      <moduleTitle>Programming Methodology</moduleTitle>
      <credits>15</credits>
      <semester>1</semester>
    </module>
    <module>
      <moduleTitle>Computer Systems Fundamentals</moduleTitle>
      <credits>15</credits>
      <semester>1</semester>
    </module>
  </courseStructure>
</myCourse>

そしてコード:

    private void buttonCreateNode_Click(object sender, EventArgs e)
    {
        // Load the XML document.
        XmlDocument document = new XmlDocument();
        document.Load(@"temp.xml");

        // Get the root element.
        XmlElement root = document.DocumentElement;

        // Create the new nodes.
            XmlElement newModule = document.CreateElement("module");
            XmlElement newTitle = document.CreateElement("moduleTitle");
            XmlElement newCredits = document.CreateElement("credits");
            XmlElement newSemester = document.CreateElement("semester");
            XmlText title = document.CreateTextNode("ECA411");
            XmlText credits = document.CreateTextNode("15");
            XmlText semester = document.CreateTextNode("1");

            // Insert the elements.
            newBook.AppendChild(newTitle);
            newBook.AppendChild(newCredits);
            newBook.AppendChild(newSemester);
            newTitle.AppendChild(title);
            newCredits.AppendChild(credits);
            newSemester.AppendChild(semester);
            root.InsertAfter(newModule, root.LastChild);

        document.Save(@"temp.xml");

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

4

2 に答える 2

3

@Mikkelbuにご協力いただきありがとうございます。

しかし、私は自分が達成しようとしていたことをどこで達成できるかという問題の解決策を見つけました。

次のように:

XmlNode parentNode = document.SelectSingleNode("myCourse/courseStructure/level4");
            parentNode.InsertBefore(newModule, parentNode.FirstChild);
于 2012-05-11T07:13:01.497 に答える
0

問題が正しいと理解した場合は、タイトルが付いたモジュールの後に新しいモジュールを挿入しますComputer Systems Fundamentals。その場合は、挿入のルートを変更する必要があります。だからあなたは行を変えることができます

XmlElement root = document.DocumentElement;

XmlNode root = document.DocumentElement.LastChild;

また、変数名rootをたとえばに変更し、courseStructureNodeそれに応じてコメントを修正します。

追伸 コードをコンパイルするには、に変更newBookする必要もありますnewModule

于 2012-05-08T12:26:02.493 に答える