C# 如何阻止XmlSerializer向空白元素添加换行符

C# 如何阻止XmlSerializer向空白元素添加换行符,c#,xml,xml-serialization,C#,Xml,Xml Serialization,我正在序列化一个对象,如下所示: XmlSerializer serializer = new XmlSerializer(obj.GetType()); using (StringWriter writer = new StringWriter()) { serializer.Serialize(writer, obj); return writer.ToString(); } (已经创建了这样的节点) 如果数据=“”一切正常,序列化程序返回: <

我正在序列化一个对象,如下所示:

XmlSerializer serializer = new XmlSerializer(obj.GetType());            
using (StringWriter writer = new StringWriter())
{
    serializer.Serialize(writer, obj);
    return writer.ToString();
}
(已经创建了这样的节点)

如果
数据=“”
一切正常,序列化程序返回:

<mynode>
</mynode>
数据

如果
data==”
序列化程序返回:

<mynode>
</mynode>

那空行是从哪里来的

我尝试了一种明显的方法,比如当数据为非空时只设置
newchild.InnerText=data

在XML中
\n
都是等效的,所以这不重要,但您可以修改下划线,以按照您想要的方式序列化输出

找到了一条简单的路线

如果(data.Length==0)newchild.IsEmpty=true;
else newchild.InnerText=数据;


希望这对其他人有所帮助。

不幸的是,它们并不等同于解析我的XML的客户端应用程序(我无法控制)。我将如何修改XMLWriter?您使用的是.Net的哪个版本?3.5,但我认为我找到了一条不同的途径。如果您使用的是xml文档,为什么不在文档本身上使用其中一种写入方法?好问题。我可能得打自己一巴掌。 if (data.Length == 0) newchild.IsEmpty = true; else newchild.InnerText = data;