XmllSerializer.Serialize并返回原始xml

Joh*_*ore 2 c# xml serialization

我正在使用XmlSerializer将对象序列化为xml.在对象被序列化之后,我最终会得到像...

<?xml version="1.0" encoding="utf-8"?>
<xml xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
</xml>
Run Code Online (Sandbox Code Playgroud)

我需要让它简单地回归......

<xml></xml>
Run Code Online (Sandbox Code Playgroud)

有没有办法在没有额外信息的情况下序列化xml?我认识到严格正确的xml需要这些额外的元素,但我需要更简单的形式,因为我将这些xml字符串附加在一起以形成更大的xml blob.

UPDATE

我能够得到以下代码...

    public static string Serialize(object o)
    {
        XmlWriterSettings xws = new XmlWriterSettings();
        xws.OmitXmlDeclaration = true;
        xws.Indent = true;

        XmlSerializerNamespaces ns = new XmlSerializerNamespaces();
        ns.Add(String.Empty, String.Empty);

        StringBuilder sb = new StringBuilder();
        XmlWriter xmlw = XmlWriter.Create(sb, xws);
        XmlSerializer serializer = new XmlSerializer(o.GetType());
        serializer.Serialize(xmlw, o, ns);
        xmlw.Flush();

        return sb.ToString();
    }
Run Code Online (Sandbox Code Playgroud)

Mrc*_*ief 5

在C#中,你可以这样做:

XmlSerializer serializer = new XmlSerializer(typeof(object));
StringWriter stringWriter = new StringWriter();

using (XmlWriter writer = XmlWriter.Create(stringWriter, new XmlWriterSettings() { OmitXmlDeclaration = true }))
{
    serializer.Serialize(writer, this, new XmlSerializerNamespaces() { "",""});
}
string xmlText = stringWriter.ToString();
Run Code Online (Sandbox Code Playgroud)

说明:

OmitXmlDeclaration = true 使它删除声明.

new XmlSerializerNamespaces() { "",""} 删除命名空间.