繁体   English   中英

替换XML文本的最佳方法

[英]Best way to replace XML Text

我有一个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>

标签内的文本已加密,我需要解密文本,我想出了一个正则表达式解决方案,但我认为这不是最佳选择,有没有更好的方法呢? 谢谢!

我不会使用正则表达式。 用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);
    }
}

(当然,我假设您知道如何进行实际的解密。)

永远不要使用正则表达式来解析XML。 都位于System.Xml中的XmlReader和XmlDocument提供了一种更好的解析XML的方法。

您知道使用的加密类型吗? 在这里查看有关.NET加密功能的基础知识

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM