我有一个看起来像这样的ByteArrayOutputStream:
<GENERAL>
<City>Barcelona</City>
<PostalCode>3061</PostalCode>
</GENERAL>
java中是否有一种将其确认为以下内容的快速方法:
<GENERAL>
<CITY>Barcelona</CITY>
<POSTALCODE>3061</POSTALCODE>
</GENERAL>
仅在标签内大写。
谢谢!
答案 0 :(得分:0)
在大多数情况下,简单的文本替换就足够了。
Path path = Paths.get("general.xml");
byte[] data = Files.readAllBytes(path);
String xml = new String(data, StandardCharsets.UTF_8);
xml = Pattern.compile("(</?[-\\w]+)")
.matcher(xml)
.replaceAll(mr -> mr.group().toUpperCase());
data = xml.getBytes(StandardCharsets.UTF_8);
Files.write(path, data);
对于不具有该版本的replaceAll的Java 8和更早版本:
Matcher m = Pattern.compile("(</?[-\\w]+)")
.matcher(xml);
StringBuffer sb = new StringBuffer();
while (m.find()) {
m.appendReplacement(sb, m.group().toUpperCase());
}
m.appendTail(sb);
xml = sb.toString();