我有一个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");
找到内容并替换数字的最佳效果是什么?
我的意思是,我怎样才能最好地在xml中找到要替换的值?
答案 0 :(得分:2)
难道你不能尝试获取String cn = "CreditCard Number="
的索引然后替换从那里开始的子字符串并从那里(信用卡号码的长度)转发16个字符吗?
或者我错误地认为你把整个标题作为一个字符串?
您还可以使用正则表达式进行模式匹配。
答案 1 :(得分:2)
小心使用字符串甚至正则表达式替换XML等快捷方式。您很容易错过很多变体:
Number
可能会显示为除。之外的元素的属性
CreditCard
。CreditCard
之间
元素和Number
属性。另见Can you provide some examples of why it is hard to parse XML and HTML with a regex?
以正确的方式做到这一点并不难: