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

时间:2010-01-13 13:08:10

标签: c# xml xml-serialization

我正在序列化这样的对象:

XmlSerializer serializer = new XmlSerializer(obj.GetType());            
using (StringWriter writer = new StringWriter())
{
    serializer.Serialize(writer, obj);
    return writer.ToString();
}

(创建了这样的节点)

XmlElement newchild = doc.CreateElement(nodename);
newchild.InnerText = data;
targetnode.AppendChild(newchild);

如果data!=""一切正常并且序列化程序返回:

<mynode>TheData</mynode>

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

<mynode>
</mynode>

该空白行从何而来?

我尝试过显而易见的事情,例如只在数据为非空白时设置newchild.InnerText=data

2 个答案:

答案 0 :(得分:1)

在XML中,<mynode><\mynode><mynode>\n</mynode>都是等价的,所以它无关紧要,但您可以修改下划线XMLWriter以按您希望的方式对输出进行序列化。

答案 1 :(得分:0)

找到一条简单的路线

            if (data.Length == 0) newchild.IsEmpty = true;
            else newchild.InnerText = data;

希望这有助于某人。