如何使用正則表達式替換XML?XML正則表達式替換
假設我有下面給定的文本:
<test>Hello World</test>
<test1>Hello World</test1>
<test2>Hello World</test2>
<test3>Hellow World</test3>
我怎麼能全部替換「Hello World」的標記值如果父標籤是不是test
標籤?
如何使用正則表達式替換XML?XML正則表達式替換
假設我有下面給定的文本:
<test>Hello World</test>
<test1>Hello World</test1>
<test2>Hello World</test2>
<test3>Hellow World</test3>
我怎麼能全部替換「Hello World」的標記值如果父標籤是不是test
標籤?
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");
+1提到替換字符串的位置。 :) –
@Mr_Green嗯..thxx指出來 – Anirudha
試試這個Regex
使用negative lookahead
和negative lookbehind
斷言:
(?<!<test>)(Hello World)(?!</test>)
解釋:
(?<! subexpression)
零寬度負向後插入。
(?! subexpression)
零寬度負前向斷言。
,並使用Regex.Replace
您的字符串替換:
Regex.Replace(inputString, "(?<!<test>)(Hello World)(?!</test>)", "New World");
http://stackoverflow.com/a/1732454/1726343 –
你想它來取代它只有在標籤值的「Hello World 「?或者,只要標籤是「測試」而不考慮內容,您是否想用固定內容替換它? –
對不起,我打算做的是改變所有hello世界的價值,如果父母的標籤不是測試...謝謝 – lexeRoy