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)
在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() { "",""} 删除命名空间.