2011-08-03 62 views
6

是否有任何技巧或實用工具可以將XML文件轉換爲一個長字符串以用於C#代碼?我不'想手動複製和粘貼XML文件中的每一行。我希望文件中的每一行都是我的c#代碼中的一個字符串行,然後在行的末尾加上「+」。把XML文件變成用於c#編碼的長字符串

+1

你想解決什麼問題?這聽起來很奇怪。 –

回答

0

你就不能發送XML的路徑進入File.ReadAllText(路徑)?

string xmlContent = System.IO.File.ReadAllText(pathToXML); 

同樣可以做得到的字符串數組...

string[] xmlContent = System.IO.File.ReadAllLines(pathToXML); 
3

具有嵌入到你的C#代碼作爲字符串字面一個大文件是一個非常糟糕的主意。將單獨的行與+運算符 連接起來是一個特別糟糕的主意,因爲字符串是不可變的,並且您將創建一個即刻被丟棄的zillion字符串對象。 Chris指出編譯器會在編譯時執行字面連接。

你可以只讀取該XML行與一行的字符串:

string my_string = File.ReadAllText("xmlfile.xml"); 

如果你試圖嵌入在項目中的exe文件中的數據文件,那麼你可以做到這一點與該項目的資源。

+0

+1指出字符串是不可變的,並創建多餘的對象。 – Tim

+0

如果字符串是文字,那麼在運行時就不會有連接,它會在編譯時發生。 –

+0

「你會創建一個立即丟棄的數十億字符串對象」:對於字符串文字而言不適用。編譯器會照顧到這一點,只將一個已經連接的字符串文字放入IL代碼中。 –

6

使用編輯器

您可以在XML粘貼到Visual Studio中的一個新的文件,並使用正則表達式搜索和替換來修復該文件。

  • 逃生的報價和其他引起問題的字符
  • 追加"到行的開頭和結尾,+到行的末尾。

然後,您只需返回並在開始處添加一個變量名稱,在末尾添加一個分號,然後將其粘貼到您的源代碼文檔中。

從那裏,您可以選擇通過編輯 - >高級 - >格式化文檔重新格式化源代碼文檔(以便很好地縮進)。

此處的另一個選擇是使用逐字字符串文字,在第一個引號之前附加@。然後將保留換行符,並且您可以使用""而不是\"來避免引號。

重新考慮你的問題中存儲的字符串

XML文件是有點難以編輯和XML點的失利一部分 - 是人編輯。爲了解決這個問題,可以考慮將XML到項目

  • 你可以它作爲內容添加到您的項目,並在文件中設置的屬性將其複製到構建目錄。然後使用適當的XmlDocument從文件加載方法,或者簡單地使用File.ReadAllText

這裏的優點(和潛在的缺點)是您可以在編譯後編輯文件。缺點是你必須和你的程序集一起部署Xml文件。

  • 您可以將XML作爲嵌入式資源添加到項目中。然後,您可以使用Assembly.GetManifestResourceStream從文件中獲取數據。

缺點(和潛在的優點)是編譯後無法編輯文件。好處是,您不必隨裝配一起部署Xml文件。

這樣做會使開發人員更容易編輯文件,而不是將Xml塞進字符串文字中。

0
string fileContent = File.ReadAllText(pathToFile)) 
         .Replace(Environment.NewLine, "+");