2011-08-04 99 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%);