Значения верхнего регистра XML в Java - PullRequest
0 голосов
/ 01 февраля 2019

У меня есть ByteArrayOutputStream, который выглядит следующим образом:

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

Есть ли быстрый способ в java связать это со следующим:

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

Прописные буквы только внутри тегов.

Спасибо!

1 Ответ

0 голосов
/ 01 февраля 2019

В большинстве случаев достаточно простой замены текста.

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);

Для Java 8 и старше, которые не имеют этой версии replaceAll:

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();
...