2010-01-13 46 views
0

我序列化一个对象像这样停止的XmlSerializer:如何从添加新行到空白元

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

回答

0

发现了一个简单的路线

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

希望这可以帮助别人。

+0

如果您使用的是xml文档,您为什么不使用文档本身的Write方法? – 2010-01-13 13:53:53

+0

好问题。我可能不得不自己拍。 – Andiih 2010-01-13 14:19:21

1

在XML既<mynode><\mynode><mynode>\n</mynode>是等价的,所以它不应该的问题,但你可以修改强调XMLWriter将序列输出你想要的方式。

+0

不幸的是,它们并不等同于解析我的XML的客户端应用程序(我无法控制它)。我将如何修改XMLWriter? – Andiih 2010-01-13 13:37:56

+0

您使用的是什么版本的.Net? – 2010-01-13 13:45:04

+0

3.5,但我想我找到了不同的路线。 – Andiih 2010-01-13 13:50:07