【问题标题】:C# XmlWriter - Add Elements in ElementC# XmlWriter - 在元素中添加元素
【发布时间】:2012-08-26 01:01:03
【问题描述】:

目前我正在使用 XmlWriter 并想询问如何在现有的 XML 文件中进行写入,例如:

a.xml

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

添加&lt;Info&gt;,例如

<name>Test1</name>

&lt;name&gt; 的位置不起作用,但最好写在&lt;/info&gt; 之前,即最后一个元素。

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

或:

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

【问题讨论】:

  • 我对你的问题做了很多修改。您应该知道 XML 是区分大小写的,因此您之前在开始和结束标记之间使用不同大小写的元素会导致问题。

标签: c# xmlreader xmlwriter


【解决方案1】:

XmlWriter 类速度很快,但只能在一个方向上逐个元素地写入。如果要编辑现有的 XML,最简单的方法是使用 LINQ to XML:

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

doc.Save(xmlFilePath);

【讨论】:

  • 不要忘记添加doc.Save(xmlFilePath);,因为更改不会保存。
【解决方案2】:

我不建议您使用 XmlReader 和 Writer,但如果您问...例如

            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();
                }
            }

【讨论】:

  • 为什么不推荐 XmlReader/Writer?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2022-10-04
  • 2014-04-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-01-24
相关资源
最近更新 更多