Лучший способ заменить текст XML - PullRequest
1 голос
/ 13 мая 2010

У меня есть веб-сервис, который возвращает следующий XML:

<Validacion>
        <Es_Valido>NK7+22XrSgJout+ZeCq5IA==</Es_Valido>
    </Validacion>
    <Estatus>
        <Estatus>dqrQ7VtQmNFXmXmWlZTL7A==</Estatus>
    </Estatus>
    <Generales>
<Nombre>V4wb2/tq9tEHW80tFkS3knO8i4yTpJzh7Jqi9MxpVVE=</Nombre>
<Apellido>jXyRpjDQvsnzZz+wsq6b42amyTg2np0wckLmQjQx1rCJc8d3dDg6toSdSX200eGi</Apellido>
<Ident_Clie>IYbofEiD+wOCJ+ujYTUxgsWJTnGfVU+jcQyhzgQralM=</Ident_Clie>           <Fec_Creacion>hMI2YyE5h2JVp8CupWfjLy24W7LstxgmlGoDYjPev0r8TUf2Tav9MBmA2Xd9Pe8c</Fec_Creacion>
<Nom_Asoc>CF/KXngDNY+nT99n1ITBJJDb08/wdou3e9znoVaCU3dlTQi/6EmceDHUbvAAvxsKH9MUeLtbCIzqpJq74e  QfpA==</Nom_Asoc>
        <Fec_Defuncion />
    </Generales>

Текст внутри тегов зашифрован, мне нужно расшифровать текст, я нашел решение с регулярными выражениями, но я не думаю, что оно очень оптимально, есть ли лучший способ сделать это? спасибо!

Ответы [ 3 ]

6 голосов
/ 13 мая 2010

Я бы не использовал регулярное выражение. Загрузите 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);
    }
}

(Я полагаю, вы знаете, как сделать фактическую часть расшифровки, конечно.)

3 голосов
/ 13 мая 2010

Никогда не используйте регулярные выражения для разбора XML. XmlReader и XmlDocument, которые находятся внутри System.Xml, обеспечивают более удобный способ анализа XML.

1 голос
/ 13 мая 2010

Знаете ли вы тип используемого шифрования? Посмотрите здесь , чтобы получить основы возможностей криптологии в .NET

...