繁体   English   中英

替换XML内容中的值的最佳方法?

[英]Best way to replace values in XML content?

我有一个String内容,其中包含一些XML(以及其他文本)。 我想在此XML内部搜索应该屏蔽的敏感支付数据(例如信用卡号)。

该字符串不是单个XML内容(我可以使用JAXB解析或使用dom遍历),但也包含其他值,如标题,例如:

Response-Code: 200 Encoding: ISO-8859-1 Content-Type: text/xml Headers: {connection=[Keep-Alive], ... <SOAP:Envelope xmlns:SOAP="http://schemas.xmlsoap.org/soap/envelope/"> <SOAP:Body> ... <ns2:Payment> <ns2:CreditCard Number="1234567723" />

什么是最好找到内容并使用value.replaceAll(".", "X");替换数字value.replaceAll(".", "X"); 我的意思是,我怎样才能最好地在xml中找到要替换的值?

难道你不能尝试获取String cn = "CreditCard Number="的索引,然后替换从那里开始的子字符串,并从那里(信用卡号码的长度)前进16个字符?

或者我错误地假设您将整个标题作为字符串?

您还可以使用正则表达式进行模式匹配。

注意对XML进行字符串甚至正则表达式替换等快捷方式。 你很容易错过很多变化:

  • Number可以作为CreditCard以外的元素的属性出现。
  • 无关紧要的空格可以介入CreditCard元素和Number属性。
  • 属性顺序在XML中是无关紧要的,因此Number可以在一种情况下显示为第一个属性,但在其他情况下显示在另一个位置。

另请参阅您是否可以提供一些示例,说明为什么难以使用正则表达式解析XML和HTML?

以正确的方式做到这一点并不难:

  1. 通过在Web服务框架中使用适当的调用来获取XML消息,或者,如果必须,可以在词汇上向前扫描XML。
  2. 使用真正的XML解析器。 对常见的标识转换/复制例程进行简单修改,除了要替换的元素/属性值之外,其他所有内容都会响应。

暂无
暂无

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

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