2

如何使用正则表达式替换 XML?

假设我有以下给定的文本:

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

如果父标签不是test标签,如何替换所有“Hello World”标签值?

4

2 回答 2

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");
于 2012-11-14T06:36:54.637 回答
1

试试这个Regex使用negative lookaheadnegative lookbehind断言:

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

解释:

(?<! subexpression ) 零宽度否定后向断言。

(?! subexpression ) 零宽度负前瞻断言。

并使用您的字符串替换Regex.Replace

Regex.Replace(inputString, "(?<!<test>)(Hello World)(?!</test>)", "New World");
于 2012-11-14T06:44:42.173 回答