Я бы не использовал регулярное выражение. Загрузите XML с чем-то вроде LINQ to XML, найдите каждый элемент, у которого есть только текстовый дочерний элемент, и замените содержимое этого дочернего элемента на расшифрованную форму.
Знаете ли вы, какие элементы будут зашифрованы? Это сделало бы это еще проще. В основном вам нужно что-то вроде:
// It's possible that modifying elements while executing Descendants()
// would be okay, but I'm not sure
List<XElement> elements = doc.Descendants().ToList();
foreach (XElement element in elements)
{
if (ShouldDecrypt(element)) // Whatever this would do
{
element.Value = Decrypt(element.Value);
}
}
(Я полагаю, вы знаете, как сделать фактическую часть расшифровки, конечно.)