2012-11-14 67 views
2

如何使用正則表達式替換XML?XML正則表達式替換

假設我有下面給定的文本:

<test>Hello World</test> 
<test1>Hello World</test1> 
<test2>Hello World</test2> 
<test3>Hellow World</test3> 

我怎麼能全部替換「Hello World」的標記值如果父標籤是不是test標籤?

+3

http://stackoverflow.com/a/1732454/1726343 –

+0

你想它來取代它只有在標籤值的「Hello World 「?或者,只要標籤是「測試」而不考慮內容,您是否想用固定內容替換它? –

+0

對不起,我打算做的是改變所有hello世界的價值,如果父母的標籤不是測試...謝謝 – lexeRoy

回答

3

Regex可用於解析XML,因爲它是嚴格其格式,但它不是推薦使用它

使用LINQ2XML

XElement doc=XElement.Load("yourXML.xml"); 
foreach(XElement elm in doc.Descendants().Elements().Where(x=>x.Name.LocalName!="test")) 
{ 
    if(elm.Value=="hello World") 
      elm.Value="";//replace here 
} 

doc.Save("yourXml.xml"); 
+0

+1提到替換字符串的位置。 :) –

+0

@Mr_Green嗯..thxx指出來 – Anirudha

1

試試這個Regex使用negative lookaheadnegative lookbehind斷言:

(?<!<test>)(Hello World)(?!</test>) 

解釋:

(?<! subexpression) 零寬度負向後插入。

(?! subexpression) 零寬度負前向斷言。

,並使用Regex.Replace您的字符串替換:

Regex.Replace(inputString, "(?<!<test>)(Hello World)(?!</test>)", "New World");