我有一个Web服务,它返回以下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>
加密的标签里面的文字,我需要解密文本,我想出了一个正则表达式解决方案,但我认为它不是最优的,有没有更好的方法来做到这一点?谢谢!
答案 0 :(得分:6)
我不会使用正则表达式。使用LINQ to XML加载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);
}
}
(我假设你知道如何做实际的解密部分。)
答案 1 :(得分:3)
永远不要使用正则表达式来解析XML。在System.Xml中找到的XmlReader和XmlDocument提供了一种更好的解析XML的方法。
答案 2 :(得分:1)
您知道使用的加密类型吗?查看here以获取.NET中的密码学功能的基础知识