2012-01-06 12 views
2

の中のXMLするのLINQを使用してXML文書の作成:私はC#でXMLを作成するために、下記のコードを使用していますC#

 XDocument xDoc = new XDocument(new XDeclaration("1.0", "UTF-16","yes"), 
      new XElement("Parent", 
      from childItem in childItemList 
      select new XElement("Child", 
        new XElement("source",childItem.Source), 
        new XElement("target", childItem.Target) 
        ))); 

そのが正常に動作し、期待通りに文書が作成されます。しかし、私は、属性値として

childItem.Source 
    childItem.Target 

を書きたいと私はそのために、次のコードを使用:

XDocument xDoc = new XDocument(new XDeclaration("1.0", "UTF-16","yes"), 
      new XElement("Parent", 
      from childItem in childItemList 
      select new XElement("Child", 
        (new XAttribute("value", childItem.Source))), 
       new XElement("target", 
       (new XAttribute("value",childItem.Target))) 
       ))); 

このコードはまた、正常に動作しますが、問題は、私は

に複数行のテキストを持っています
childItem.Source 
    childItem.Target 

ノードのInner-Textとして記述されているとうまくいきますが、属性の値として記述すると、複数行のテキストが1行のテキストに変換されています。私はそのままXML文書の空白と改行をすべて保存したいと思います。どんな助けもありがとうございます。

答えて

0

属性に改行(CRLF)を使用することはできません。改行は、XElementクラスから16進リテラルに常に変換され、安全です。私はこれがHTTP(または他のネットプロトコル)に適合するためだと思います。たとえば、新しい行はURIには使用できません。あなたは常にあなたが持っている16進値からあなたのCRLFを得ることができます。

関連する問題