我有以下代码:
class Program
{
static void Main(string[] args)
{
using (var stream = File.Create(@"C:\test.xml"))
{
var xml =
new XElement("root",
new XElement("subelement1", "1"),
new XElement("subelement2", "2"));
var doc = new XDocument(xml);
doc.Declaration = null;
doc.Save(stream);
}
}
}
我试图在没有xml声明的情况下保存XML,但即使我将XDocument
的声明归零,它仍然被保存到最终的XML中。
此代码正在输出:
<?xml version="1.0" encoding="utf-8"?>
<root>
<subelement1>1</subelement1>
<subelement2>2</subelement2>
</root>
答案 0 :(得分:14)
相反XDocument.Save()
您可以XmlWriter
使用设置为XmlWriterSettings.OmitXmlDeclaration
的{{1}}
true
答案 1 :(得分:7)
你可以使用XmlWriter
使用自定义XmlWriterSettings
执行此操作(您需要System.Xml
的using指令):
using System;
using System.IO;
using System.Xml;
using System.Xml.Linq;
class Program
{
static void Main(string[] args)
{
var xml =
new XElement("root",
new XElement("subelement1", "1"),
new XElement("subelement2", "2"));
var doc = new XDocument(xml);
var settings = new XmlWriterSettings
{
OmitXmlDeclaration = true
};
using (var stream = File.Create(@"test.xml"))
{
using (var writer = XmlWriter.Create(stream, settings))
{
doc.Save(writer);
}
}
}
}
假设您要指定Stream
- 您还可以从文件名中创建XmlWriter
:
using (var writer = XmlWriter.Create("test.xml", settings))
{
doc.Save(writer);
}
(如果您不需要XDocument
其他任何内容,您当然可以以相同的方式在根元素上调用Save
。)