![](/img/trans.png)
[英]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.