2

現在、私は XmlWriter を使用しており、例として、既存の XML ファイルにどのように書き込むことができるかを尋ねたいと考えていました。

a.xml

<info>
     <description>Test3</description>
     <loops>100</loops>
</info>

に追加し<Info>ます。

<name>Test1</name>

の位置は何の役割も果たしませんが、最後の要素である の<name>前に記述した方がよいでしょう。</info>

<info>
     <description>Test3</description>
     <loops>100</loops>
     <name>Test1</name>
</info>

また:

<info>
     <name>Test1</name>
     <description>Test3</description>
     <loops>100</loops>
</info>
4

2 に答える 2

3

XmlWriterクラスは高速ですが、要素ごとに一方向にしか書き込みません。既存の XML を編集する場合、LINQ to XML を使用するのが最も簡単な方法です。

var doc = XDocument.Parse(xml); // or XDocument.Load(xmlFilePath)
doc.Root.Add(new XElement("name", "Test1"));

doc.Save(xmlFilePath);
于 2012-08-26T01:26:38.377 に答える
1

XmlReader と Writer を使用することはお勧めしませんが、質問がある場合は... xml を読み取ってから書き直す必要があると思いますが、新しいノードを使用します。例えば

            XmlDocument d = new XmlDocument();
            d.Load("c:/a.xml");

            XmlNode root = d.FirstChild;
            if(root.HasChildNodes)
            {
                using(XmlWriter writer = new XmlTextWriter("c:/a.xml", Encoding.Default))
                {
                    writer.WriteStartDocument();
                    writer.WriteStartElement(root.Name);
                    foreach(XmlNode node in root.ChildNodes)
                    {
                        writer.WriteStartElement(node.Name);
                        writer.WriteValue(node.InnerText);
                        writer.WriteEndElement();

                        // writing new node after "loop" node
                        if (node.Name == "loop")
                        {
                            writer.WriteStartElement("name");
                            writer.WriteValue("test1");
                            writer.WriteEndElement();
                        }

                    }
                    writer.WriteEndElement();
                    writer.WriteEndDocument();
                }
            }
于 2012-08-26T01:31:29.370 に答える