【问题标题】:Best way to replace XML Text替换 XML 文本的最佳方法
【发布时间】:2011-02-19 03:04:54
【问题描述】:

我有一个返回以下 XML 的 Web 服务:

<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>

标签内的文本是加密的,我需要解密文本,我想出了一个正则表达式的解决方案,但我认为它不是很理想,有没有更好的方法来做到这一点?谢谢!

【问题讨论】:

    标签: c# .net xml xml-parsing


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        【解决方案3】:

        您知道使用的加密类型吗?查看 here 了解 .NET 中的密码学功能的基础知识

        【讨论】:

          猜你喜欢
          • 2015-10-09
          • 1970-01-01
          • 1970-01-01
          • 2012-07-30
          • 1970-01-01
          • 2017-08-23
          • 2022-01-21
          • 2020-10-07
          • 2013-12-26
          相关资源
          最近更新 更多