Java

时间:2019-02-01 14:25:55

标签: java xml uppercase

我有一个看起来像这样的ByteArrayOutputStream:

<GENERAL>
        <City>Barcelona</City>
        <PostalCode>3061</PostalCode>   
</GENERAL>

java中是否有一种将其确认为以下内容的快速方法:

<GENERAL>
            <CITY>Barcelona</CITY>
            <POSTALCODE>3061</POSTALCODE>   
  </GENERAL>

仅在标签内大写。

谢谢!

1 个答案:

答案 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();