如何在使用XElement.Save时省略xml声明?

时间:2011-02-25 23:25:03

标签: c# .net xmlreader xelement

XElement.Save实际上做了我需要的东西,但它用以下内容启动文件:

<?xml version="1.0" encoding="utf-8"?>

有没有办法阻止这种情况?

创建XElement后,我应该使用其他类型的方法保存吗?

或者我应该通过XmlReader.Read跳过该行吗?因为这样做我觉得它更脆弱,因为我假设第一行总是这个xml声明。

实现这一目标的最简单方法是什么?

3 个答案:

答案 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);