2011-08-04 72 views
0

我有一个XML,其中包含一些包含路径的节点,如果确定某个节点可能需要更改某些路径信息被发现。在XML文件中查找并替换某个节点中的某些文本

例如,像这样的节点可能存在:

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

我需要找到具有在路径(如“1312”之上)一个4位数字的所有路径,并改变这对像%NUM%。

什么是最好的方法?我的第一个想法是使用正则表达式,但从一些搜索看来,这似乎是一个坏主意?

也许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%);