2010-09-10 16 views
2

我生成具有這種結構的一個的XElement:LINQ to XML在標籤之間生成 r n?

<TestNames>\r\n <Test>YA</Test>\r\n <Test>YO</Test>\r\n </TestNames> 

如何擺脫空格和\ r \ n的非黑客攻擊方式:)

更新

XElement testsXmlDocument= new XElement("TestNames");   

foreach (string test in selectedTests)   
    testsXmlDocument.Add(new XElement("Test",test)); 

return testsXmlDocument.ToString(); 
+1

你到底在幹什麼?生成XML?有幾種方法可以做到這一點,所以請展示一些生成此代碼的代碼。 – 2010-09-10 11:00:55

+0

我已經更新了我的示例! – Elisabeth 2010-09-10 11:07:29

回答

9

XElement提供了一個ToString的重載,該重載的參數類型爲SaveOptions。此枚舉的其中一個值是DisableFormatting

如果這不能給你足夠的控制,那麼你需要使用XElement的Save重載,該重載需要XmlWriter的實例。 XmlWriter的輸出可以通過使用XmlWriterSettings進行控制。

請注意,推薦的創建XmlWriter的方法是使用靜態Create方法,而不是直接構建一個。如果您希望輸出字符串,則可以使用佔用StringWriter的過載。

+0

像一個魅力DisableFormatting工作! – Elisabeth 2010-09-10 11:50:22

0

我不得不將數據庫數據寫入一個xml文件,並使用LINQ to XML從xml文件中讀取它。記錄中的某些字段本身是xml字符串,包含\ r字符。這些必須保持完好。我花了好幾天的時間試圖找到可行的東西,但似乎微軟正在將\ r轉換成\ n。

以下解決方案爲我工作:

要編寫一個加載的XDocument到XML文件保存\ r完好,其中XDOC是一個XDocument和文件路徑是一個字符串:

XmlWriterSettings xmlWriterSettings = new XmlWriterSettings 
    { NewLineHandling = NewLineHandling.None, Indent = true }; 
using (XmlWriter xmlWriter = XmlWriter.Create(filePath, xmlWriterSettings)) 
{ 
    xDoc.Save(xmlWriter); 
    xmlWriter.Flush(); 
} 

要閱讀XML文件轉換爲XElement \ r完好無損:

using (XmlTextReader xmlTextReader = new XmlTextReader(filePath) 
    { WhitespaceHandling = WhitespaceHandling.Significant }) 
{ 
    xmlTextReader.MoveToContent(); 
    xDatabaseElement = XElement.Load(xmlTextReader); 
}