2012-01-03 106 views
1

我有一個XML文件。根據我的要求,我需要更新空標籤,例如我需要更改<xml></xml> to <xml/>。是否有可能改變標籤一樣的..如何改變XML標籤格式就像<xml></xml>到<xml/>

謝謝...

+1

這取決於你是如何創造您的xml文件放在第一位......代碼片段將會很有用 – 2012-01-03 10:59:15

+0

我已經創建了xml文件。我需要從 Kathirvel 2012-01-03 11:05:33

回答

3
var xmlString="<xml></xml> <toto></toto>"; 
var properString=System.Text.RegularExpressions.Regex.Replace(xmlString, "<([^>]+)></[^>]+>", "<$1/>"); 

編輯:解釋!

@Neil騎士已經提供了,在評論,a link to Wikipedia解釋的正則表達式的概念。 .NET特定部分可在此處獲得:.NET Framework Regular Expressions

起始XML標記可以與以下正則表達式匹配:<[^>]+>[^>]+部分可以理解爲:所有不是「>」的字符,至少包含一個字符(因此<>不匹配,但是<a>是)。結尾的XML標籤可以與相同類型的表達式匹配:</[^>]+>(注意第一個字符後面的斜槓)。所以正則表達式<[^>]+></[^>]+>匹配空標籤,如<foo></foo>(但要小心,它也與<foo></bar>匹配,這是無效的XML代碼)。

我們現在需要的是「<」和「>」之間的字符隔離。爲此,我們使用括號:<([^>]+)>。這指示正則表達式引擎捕獲匹配的字符。 「$ x」字符串(其中「x」是數字:第一個匹配括號中的「$ 1」,第二個匹配中的「$ 2」等)的每個括號可以在後面的替換操作中被引用。

因此,撥打Regex.Replace(xmlString, "<([^>]+)></[^>]+>", "<$1/>"),<foo></foo>將被替換爲<foo/>(「foo」字符被捕獲,並且「$ 1」被它們替代)。 <foo></bar>也將被替換爲<foo/>

我希望這個解釋是不夠@Felix K. O)
(我的英文不太好,這就是爲什麼我沒有提供很多細節)

+1

一些鏈接編輯的空標籤REG-EX的解釋和一個簡短的說明,我給你一個+1。 – 2012-01-03 11:18:37

2
if (someElement.innerText == string.Empty) 
{ 
    someElement.innerText = null; 
} 
+0

這需要一個XmlDocument的權利?請多留一點時間回答。 – 2012-01-03 11:20:33

+4

在手機觸摸屏上輸入以上內容對我來說已經夠用了。 :-P – KristoferA 2012-01-03 11:22:34

+0

我想知道什麼提供了最佳的性能:正則表達式還是完整遍歷XmlDocument?在代碼簡潔性方面,正則表達式更好:只有一行代碼來處理整個文檔。 – CedX 2012-01-04 00:05:24