我使用以下代码创建一个xml文档 -
XmlSerializerNamespaces ns = new XmlSerializerNamespaces();
ns.Add("", "");
new XmlSerializer(typeof(docket)).Serialize(Console.Out, i, ns);
Run Code Online (Sandbox Code Playgroud)
这非常适合创建没有命名空间属性的xml文件.我想在根元素中也没有编码属性,但我找不到办法.有没有人知道是否可以这样做?
谢谢
Ach*_*him 26
删除旧答案并使用新解决方案进行更新:
假设可以完全删除xml声明,因为没有编码属性它没有多大意义:
XmlSerializerNamespaces ns = new XmlSerializerNamespaces(); ns.Add("", "");
using (XmlWriter writer = XmlWriter.Create(Console.Out, new XmlWriterSettings { OmitXmlDeclaration = true}))
{
new XmlSerializer(typeof (SomeType)).Serialize(writer, new SomeType(), ns);
}
Run Code Online (Sandbox Code Playgroud)
要从XML头中删除编码,请将带有空编码的TextWriter传递给XmlSerializer:
MemoryStream ms = new MemoryStream();
XmlTextWriter w = new XmlTextWriter(ms, null);
s.Serialize(w, vs);
Run Code Online (Sandbox Code Playgroud)
说明
XmlTextWriter使用构造函数中传递的TextWriter编码:
// XmlTextWriter constructor
public XmlTextWriter(TextWriter w) : this()
{
this.textWriter = w;
this.encoding = w.Encoding;
..
Run Code Online (Sandbox Code Playgroud)
它在生成XML时使用此编码:
// Snippet from XmlTextWriter.StartDocument
if (this.encoding != null)
{
builder.Append(" encoding=");
...
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
30346 次 |
| 最近记录: |