我正在尝试编辑保存其格式的
XML文件:
<root> <files> <file>a</file> <file>b</file> <file>c</file> <file>d</file> </files> </root>
所以我使用XDocument xDoc = XDocument.Load(path,LoadOptions.PreserveWhitespace)加载xml文档;
但是当我试图添加新元素xDoc.Root.Element(“files”)时.添加(new XElement(“test”,“test”));
xDoc.Root.Element(“files”).Add(new XElement(“test2”,“test2”));
它添加在同一行,因此输出如下:
<root> <files> <file>a</file> <file>b</file> <file>c</file> <file>d</file> <test>test</test><test2>test2</test2></files> </root>
那么如何在新行中添加新元素以节省初始格式?我尝试使用带有Setting.Indent = true的XmlWriter来保存XDocument,但正如我所见,当我使用xDoc.Root.Element()时,元素被添加到同一行.Add()
更新:程序加载,修改和保存文档的完整部分
using System; using System.Xml; using System.Xml.Linq; using System.Text; namespace ConsoleApplication2 { class Program { static void Main(string[] args) { string path = @".\doc.xml"; XDocument xDoc = XDocument.Load(path,LoadOptions.PreserveWhitespace); //when i debug i see in "watch" that after these commands new elements are already added in same line xDoc.Descendants("files").First().Add(new XElement("test","test")); xDoc.Descendants("files").First().Add(new XElement("test2","test2")); XmlWriterSettings settings = new XmlWriterSettings(); settings.Encoding = Encoding.UTF8; settings.Indent = true; settings.IndentChars = "\t"; using (XmlWriter writer = XmlTextWriter.Create(path,settings)) { xDoc.Save(writer); //Here i also tried save without writer - xDoc.Save(path) } } } }