2011-05-13 45 views
3

我編寫了一個函數,該函數根據保存在我的應用程序中的數據構建XML字符串。 接下來,這個字符串應該寫入一個實際的XML文件,因此可以使用它。 然後將此文件用於HTML Web應用程序中以提供數據。 我使用下面的代碼片段來做到這一點:將字符串寫入XML文件而不進行格式化(C#)

xmlDoc.Save("exercise.xml"); 

很容易的,但有一個小陷阱。 我的XML文件在Firefox中無法正常工作,因爲它將空白視爲childNode。 重寫我的整個Web應用程序幾乎是不行的,因爲它太多的工作。 我寧願只是能夠以非格式化方式將我的XML字符串保存到XML文件中,因爲我已經測試並確認這適用於幾乎所有可能的瀏覽器。 字符串本身不包含任何回車符或製表符,因此Save() - 方法可能會自動添加它。有什麼辦法來阻止它做到這一點,或另一種簡單的方法來規避這種情況?

+1

請您可以發佈一個例子,或者你保存到文件中的XML。 – 2011-05-13 12:11:19

回答

3

嘗試

xDoc.PreserveWhitespace = true; 
xDoc.Save(...); 
+0

工程就像一個魅力,謝謝! – Jort 2011-05-13 12:51:04

1

你有一個字符串包含工作XML,爲什麼不能直接使用TextWriter/StreamWriter將它推出到文件?

+0

說實話,自從我上次使用Text/StreamWriter以來已經很長時間了(自從我編寫任何C#代碼以來已經有好幾個月了),並且我已經編寫了xml文件,所以我希望能夠快速固定。但是,您的觀點當然有效,感謝您的意見。 – Jort 2011-05-13 12:54:41

9

看看這個XmlDocument.Save過載。 這裏有保存XML沒有空格縮進一個完整的代碼示例:

using (XmlWriter xw = XmlWriter.Create("exercise.xml", new XmlWriterSettings { Indent = false })) 
    doc.Save(xw); 
+0

不錯,非常感謝! – Jort 2011-05-13 12:51:23

1

我承認我沒有測試過這一點,但希望這給你朝着最終解決

var xws = new XmlWriterSettings 
{ 
    Indent = false, 
    NewLineOnAttributes = false 
}; 

using (var xtw = XmlTextWriter.Create("exercise.xml", xws)) 
{ 
    xmlDoc.Save(xtw); 
} 
1

您是否嘗試過一個提示只是將你建立的字符串寫入文件?事情是這樣的:

var myXML= "<root><node>something something something dark side</node></root>"; 
var file = new System.IO.StreamWriter("c:\\file.xml"); 
file.WriteLine(myXML); 
file.Close(); 
+0

我認爲Zruty的答案比較好,但爲了以防萬一,我會離開我的。 – Chuck 2011-05-13 12:18:46

+0

我認爲這將需要更多的代碼行,謝謝你的例子! – Jort 2011-05-13 12:57:55

相關問題