【发布时间】:2017-06-04 01:20:39
【问题描述】:
我有以下代码:
public String replaceValues(String string, HashMap hashMap){
TestHashMap h = new TestHashMap();
String str = new String(h.xmlToString());
Iterator iterator = hashMap.entrySet().iterator();
while(iterator.hasNext()){
HashMap.Entry pair = (HashMap.Entry)iterator.next();
str = str.replaceAll(pair.getKey().toString(), pair.getValue().toString());
}
return str;
}
public static void main(String[] args) {
TestHashMap h = new TestHashMap();
HashMap<String, String> hmap = new HashMap<String, String>();
hmap.put("{username}", "Tudor");
hmap.put("{password}", "Tester123");
System.out.println(hmap);
String replace = h.replaceValues(h.xmlToString(), hmap);
System.out.println(replace);
}
XML 文件如下所示:
<?xml version="1.0" encoding="UTF-8"?>
<hashmap>
<request>
<username>{username}</username>
<password>{password}</password>
</request>
</hashmap>
这会引发异常:非法重复。但我不知道如何转义“{}”字符,因为我得到这些字符的方法是使用 getKey() 和 getValue() 方法,它按预期返回 {password} 和 {username}。但是它在String replace = h.replaceValues(h.xmlToString(), hmap) 行中断。请问有什么解决办法吗?值得一提的是,如果我将 {password} 替换为随机值(例如“password1”),上面的代码就可以正常工作。
【问题讨论】: