2010-01-13 24 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