2015-01-14 3 views
1

У меня есть файл XML, который содержит большое количество регулярных выражений шаблонов поиска:Чтения Regex модели из файла XML

<Data> 
    <Expression>Error removing log\. Error: 5</Expression> 
</Data> 
<Data> 
    <Expression>Unable to open file C:\\Documents\\Stuff\\Message\.txt</Expression> 
</Data> 

Как вы можете видеть, выражение уже правильно сбежавший в моем файле XML. Проблема в том, что, когда я десериализую файл в список строк, а затем пытаюсь использовать строки как шаблоны регулярных выражений, я заметил, что они снова исчезли. Например, первое выражение выше читается как:

"Error removing log\\. Error: 5" 

Эта модель затем не может найти никаких совпадений в файле я рылась.

Есть ли способ прочитать эти выражения из файла XML без их повторного экранирования?

Изменение способа написания паттернов в XML-файле не является опцией, потому что у меня нет контроля над файлом.

EDIT: Вот код, который я использую эти шаблоны регулярных выражений в:

private void FindExpression(Data errorExpression) 
    { 
     Regex regex = new Regex(errorExpression.Expression, 
           RegexOptions.IgnoreCase, 
           TimeSpan.FromMinutes(2)); 
     MatchCollection errorMatches = regex.Matches(FileContents); 
     // There is more stuff here, to handle if I find a match 
    } 
+1

Это не так, именно так они появляются в отладчике. – Mitch

+0

Но я использую шаблон для поиска, и он не находит никаких совпадений, несмотря на то, что я вижу в файле, который я ищу, что есть совпадения ... – Caitlyn

+1

В журнале есть определенные пробелы, не так ли? – spender

ответ

0

Это то, что я сделал, и я не вижу выражения будучи снова бежал.

XmlDocument doc1 = new XmlDocument(); 
doc1.LoadXml(@"<Exps><Data> <Expression>Error removing log\. Error: 5</Expression></Data><Data> <Expression>Unable to open file C:\\Documents\\Stuff\\Message\.txt</Expression></Data></Exps>"); 
XmlNodeList xmList = doc1.SelectNodes("/Exps/Data/Expression"); 
foreach (XmlNode node in xmList) 
{ 
    Regex reg = new Regex(node.InnerText); 
} 
Смежные вопросы