2014-06-10 44 views
1

創建給編碼我要創建具有編碼爲如何爲ISO-8859-1的XML使用LINQ

<?xml version="1.0" encoding="ISO-8859-1"?> 

目前XML我使用LINQ是有標記爲

創建XML文件
<?xml version="1.0" encoding="UTF-8"?> 

我該如何使用LINQ來做到這一點。

+0

Linq是做查詢,而不是寫XML。所以,當你要求一個「Linq only」方法來做到這一點時,答案是:沒有辦法做到這一點。 –

+1

@MareInfinitus:我相信這個問題是關於_LINQ到XML_的,它確實可以用來編寫XML,並且我已經相應地更改了標籤。 –

回答

5

你應該使用XDeclaration

var d = new XDocument(new XDeclaration("1.0", "ISO-8859-1", ""), new XElement("Root", 
    new XElement("Child1", "data1"), 
    new XElement("Child2", "data2") 
)); 
+1

有趣的是,這確實與'XDocument.Save(fileName)'一起工作,如果存在'XDeclaration',它必須推斷使用的編碼。 –

2

您可以保存XDocumentStreamWriter具有所需編碼:

var xDocument = new XDocument(new XElement("root")); 
var encoding = Encoding.GetEncoding("iso-8859-1"); 
using (var fileStream = File.Create("... file name ...")) 
    using (var streamWriter = new StreamWriter(fileStream, encoding)) 
    xDocument.Save(streamWriter); 
1

如果使用XMLDcoument,那麼你可以這樣做如下:

 XmlDocument doc = new XmlDocument(); 
     XmlDeclaration declaration = doc.CreateXmlDeclaration("1.0", "ISO-8859-1", null); 
     doc.AppendChild(declaration); 
     var node = doc.CreateNode(XmlNodeType.Element, "Root", ""); 
     doc.AppendChild(node); 
     doc.Save("TestDoc.xml");