XElement.Save
实际上做了我需要的东西,但它用以下内容启动文件:
<?xml version="1.0" encoding="utf-8"?>
有没有办法阻止这种情况?
创建XElement
后,我应该使用其他类型的方法保存吗?
或者我应该通过XmlReader.Read
跳过该行吗?因为这样做我觉得它更脆弱,因为我假设第一行总是这个xml声明。
实现这一目标的最简单方法是什么?
答案 0 :(得分:5)
XElement.ToString()
不会将XML声明添加到输出中。但我不明白为什么XmlReader
- 或任何XML解析器 - 会遇到标准XML声明的问题。
答案 1 :(得分:2)
使用XmlWriter将为您提供此功能。
Microsoft文章:Serializing with an XML Declaration描述了如何控制序列化是否生成XML声明。
答案 2 :(得分:1)
此示例将示例 xmlTree 数据写入文本文件 data.xml ,但没有声明行,包括缩进格式:
XElement xmlTree = new XElement("Root",
new XAttribute("Attribute1", 1),
new XElement("Child1", 1),
new XElement("Child2", 2)
);
using (var writer = XmlWriter.Create("data.xml", new XmlWriterSettings { OmitXmlDeclaration = true, Indent = true }))
xmlTree.Save(writer);