2

正規表現置換をXMLで使用するにはどうすればよいですか?

私が以下の与えられたテキストを持っていると仮定します:

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

親タグがタグでない場合、どうすればすべての「HelloWorld」タグ値を置き換えることができtestますか?

4

2 に答える 2

3

RegexXMLは形式が厳密であるため、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 に答える