c# - 替换 XML 文本的最佳方式

标签 c# .net xml xml-parsing

我有一个返回以下 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);
    }
}

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

关于c# - 替换 XML 文本的最佳方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2827507/

相关文章:

c# - .net 图像编辑器控件

c# - 如何在 VS 2010 中添加 microsoft.office.interop.word(2003 版)

c# - 是否可以从内部用常量代码包装一个方法?

xml - 如何在 Golang 中将 []byte XML 转换为 JSON 输出

c# - Linq 到 XML : Get all nodes that contain certain children

c# - 如何处理为数据表分配数据行时的空值

c# - Asp.NET 中的领英 API

.net - 从数据库显示 RTF(RichText 格式)到客户端报告(MS ReportViewer)

mysql - azure 简单表自定义 api

php - 在 MySQL 数据库中存储关联数组