[英]Is there any way to save an XmlDocument *without* indentation and line returns?
[英]Format XmlDocument (indentation) without removing line breaks
我有一个 XML 文件,我想修改(添加新元素)然后保存。 问题是该文件有不应删除的空行。
这就是我目前正在做的事情:
// loading document with PreserveWhiteSpace = true
var doc = new XmlDocument { PreserveWhitespace = true };
doc.Load(inputFilePath);
// add a new element to the document
var el = doc.CreateElement("TestElement");
doc.InsertAfter(el, doc["SomeParentElement"]["SomeChildElement"]);
// save document
var settings = new XmlWriterSettings
{
Indent = true,
IndentChars = @" ",
NewLineChars = "\r\n",
NewLineHandling = NewLineHandling.Replace,
OmitXmlDeclaration = true
};
using (var writer = XmlWriter.Create(outputFilePath, settings))
{
doc.Save(writer);
}
我在加载之前将文档PreserveWhitespace
设置为 true,以便不会忽略换行符。 因此,我在doc["SomeParentElement"]["SomeChildElement"]
之后添加的新元素不会从新行开始,如果我自己添加换行符,则没有正确的缩进。 我尝试了 XmlWriterSetting 中的许多设置,但是当PreserveWhitespace
设置为 true 时,其中似乎没有任何效果。
是否可以在 xml 文件中插入新元素并以良好的格式保存它但不删除文档中的空行?
例子:
<SomeParentElement>
<SomeChildElement/>
<SomeChildElement2/>
<SomeChildElement3/>
</SomeParentElement>
运行上面的代码后应该是这样的:
<SomeParentElement>
<SomeChildElement/>
<TestElement/>
<SomeChildElement2/>
<SomeChildElement3/>
</SomeParentElement>
我通常建议 LINQ 到 XML 是更好的 API。 您可以插入所需的空格以保持所需的格式。 例如:
var doc = XDocument.Load(inputFilePath, LoadOptions.PreserveWhitespace);
var child = doc.Elements("SomeParentElement").Elements("SomeChildElement").First();
child.AddAfterSelf(
new XText("\r\n "),
new XElement("TestElement"));
doc.Save(outputFilePath);
请参阅此小提琴以获取工作演示。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.