2013-07-16 129 views
1

我有這樣的LINQ查詢,我需要刪除自動添加的XML聲明標記。如何在使用LINQ to XML時刪除XML聲明?

var cubbingmessagexml = new XDocument(
         new XElement("MESSAGE", new XAttribute("ID", "CUB"), 
         new XElement("RECORD", new XAttribute("STORENO", cubing.StoreID), 
               new XAttribute("TPNB", cubing.ProductCode), 
               new XAttribute("QUANTITY", cubing.Quantity), 
               new XAttribute("CUBINGTIME", cubing.CubingDateTime.ToString("yyyyMMddHHmmss")), 
               new XAttribute("SHELFFACING", cubing.ShelfFacing) 
            ))); 



        xml = cubbingmessagexml.ToString(); 

請幫助

我不想保存XML文件,只需要返回XML作爲字符串

+1

你要保存些什麼?一份文件? TextWriter? –

+0

我不保存XML,這是一個寫入內部方法的邏輯,它將返回字符串 – CSharped

+0

請參閱http://stackoverflow.com/questions/8926784/why-is-my-x-document-saving-the-declaration-when-我 - 不要想學就到。我不認爲有'ToString'的方法。 –

回答

2

如果你指頂部的XML版本和東西,有一個xml編寫器設置來關閉它。

var writerSettings = new XmlWriterSettings(); 
writerSettings.OmitXmlDeclaration = true; 

using (var buffer = new StringWriter()) 
using (var writer = XmlWriter.Create(buffer, writerSettings)) 
{ 
    cubbingmessagexml.Save(writer); 
    writer.Flush(); 
    string result = buffer.ToString(); 
} 
+0

您好郝遠,正如我在評論中提到的我不想保存XML文件,只需要返回XML作爲一個字符串,所以你的建議上面不會鍛鍊 – CSharped

+0

@PradeepRao是的,它會的;看修改後的答案。HaoYuan提到你必須使用StringWriter。 – shambulator

1

跳過 XDocument

var cubbingmessagexml = 
    new XElement("MESSAGE", new XAttribute("ID", "CUB"), 
     new XElement("RECORD", 
      new XAttribute("STORENO", cubing.StoreID), 
      new XAttribute("TPNB", cubing.ProductCode), 
      new XAttribute("QUANTITY", cubing.Quantity), 
      new XAttribute("CUBINGTIME", cubing.CubingDateTime.ToString("yyyyMMddHHmmss")), 
      new XAttribute("SHELFFACING", cubing.ShelfFacing) 
     ) 
    ); 

xml = cubbingmessagexml.ToString(); 

MSDN

請注意,你只需要,如果你需要得到的XDocument類提供的特定功能來創建的XDocument對象。在很多情況下,您可以直接使用XElement。直接使用XElement是一個更簡單的編程模型。

如前所述,XElement類是在LINQ到XML編程接口的主類。在很多情況下,您的應用程序不會要求您創建文檔。通過使用XElement類,您可以創建一個XML樹,添加其他XML樹,修改XML樹並保存它。即使XDocument沒有顯示

聲明。

+0

嗨澤夫斯皮茨,謝謝你的回答,但即使與代碼中的XDocument我沒有得到變量「xml」中的XML聲明部分,我不知道如果刪除這將增加任何值 – CSharped

+1

我很困惑。你想要XML聲明還是不需要? –

+0

我需要刪除,我的意思是在上面的評論是在試圖調試代碼時,我在上面的代碼中添加了一個變量「xml」的監視(代碼的最後一行),它從來沒有聲明標記 – CSharped