2011-08-04 13 views
0

私はパスを含む多数のノードを持っているXMLを持っています。パスがある場合は、パスの一部を変更する必要があります情報が見つかりました。XMLファイル内のノード内の特定のテキストを検索して置き換えます

<File name="dev\Desktop\Working\Test\English\1312\myopic.dll"> 

私は(上記「1312」のような)パスに4桁の数字を持っているすべてのパスを見つける必要があり、そしてようなものに変更:

例えば、このようなノードが存在してもよいです%NUM%

どのような方法が最適ですか?私の最初の考えはRegExを使うことでしたが、いくつかの検索ではそれは悪い考えですね?

多分LINQ to XML(私にはそれに限られた経験がありますか?)

答えて

1

私は正規表現がここでここで最もeffecint解決策があると思いますが、それはすべての

string path = @""<File name=""dev\Desktop\Working\Test\English\1312\myopic.dll"">"; 
string pattern = @"\d\d\d\d"; 
Regex regex = new Regex(pattern); 
string replacement = "%NUM%"; 

string result = regex.Replace(input, replacement); 
//result is: <File name="dev\Desktop\Working\Test\English\%NUM%\myopic.dll"> 
で悪い考えではありません
1

これはXMLなので、なぜXElementを使用しないでください。

一方、これが一度だけのことで、パターンがXMLの間違った部分に現れないようにするには、正規表現を実装する方がはるかに高速です。

newFileContents = Regex.Replace(
    fileContents, 
    @"(?<=dev\\Desktop\\Working\\Test\\English\\)\d+", 
    "%num%); 
関連する問題