当前位置:  开发笔记 > 编程语言 > 正文

使用C#Regular表达式替换XML元素内容

如何解决《使用C#Regular表达式替换XML元素内容》经验,为你挑选了3个好方法。

我正在编写一些处理日志记录xml数据的代码,我希望能够替换文档中某些元素(例如密码)的内容.我宁愿不序列化和解析文档,因为我的代码将处理各种模式.

样本输入文件:

doc#1:

   
       jsmith
       myPword
    

doc#2:


       jsmith
       myPword
 

我希望我的输出是:

输出文档#1:


       jsmith
       XXXXX
 

输出文档#2:


       jsmith
       XXXXX
 

由于我将要处理的文档可能有各种模式,我希望能够找到一个很好的通用正则表达式解决方案,它可以找到带有密码的元素并相应地屏蔽内容.

我可以使用正则表达式和C#解决这个问题,还是有更有效的方法?



1> Andrew Hare..:

使用XSLT可以最好地解决此问题:



    
        
            
        
    
    
        
            XXXXX
        
    

只要正确处理命名空间,这将适用于两个输入.

编辑:通过"正确处理命名空间"澄清我的意思

确保具有ns名称前缀的源文档具有为文档定义的命名空间,如下所示:



    jsmith
    XXXXX



2> Welbog..:

我会说你最好用.NET XmlDocument对象解析内容并使用XPath查找密码元素,然后更改其innerXML属性.它具有更正确的优点(因为XML首先不是常规的),并且它在概念上很容易理解.



3> Michael Kohn..:

根据尝试解析和/或修改XML而没有适当解析器的系统的经验,让我说:不要做.使用XML解析器(此处还有其他答案可以快速轻松地完成此操作).

使用非xml方法来解析和/或修改XML流将始终会让您在将来的某个时刻感到痛苦.我知道,因为我感到痛苦.

我知道,如果你使用正则表达式解决方案,它似乎会更快 - 运行时/更简单 - 代码/更容易理解/无论如何.但是你以后会让某人的生活变得悲惨.

推荐阅读
惬听风吟jyy_802
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有