Мы извлекаем XML из одного источника и затем передаем его другому объекту для дальнейшей обработки. Однако извлеченный XML содержит специальные символы в значении атрибута, которые неприемлемы для следующего процесса.
Например,
Пример ввода:
"<Message text="<html>Welcome User, <br> Happy to have you. <br>.</html>"
Ожидаемый результат:
"<Message text="<html>Welcome User, <br> Happy to have you. <br>.</html>">
Пример ввода: <Message text="<html>Welcome User, <br> Happy to have you. </html>" Multi="false"> <Meta source="system" dest="any"></Meta></Message>
Выход: <Message text="<html>Welcome User, <br> Happy to have you. </html>" Multi="false"> <Meta source="system" dest="any"></Meta></Message>
Но <br>
не будет заменен, если на входе есть несколько тегов <br>
.
Мы используем следующий код:
String xml = "<Message text=\"<html>Welcome User, <br> Happy to have you. <br>.</html>\" Multi=\"false\"><Meta source=\"system\" dest=\"any\"></Meta></Message>";
System.out.println("ORG:" + xml);
xml = replaceChars(xml);
System.out.println("NEW:" + xml);
private static String replaceChars(String xml)
{
xml = xml.replace("&", "&");
xml = xml.replaceAll("\"<([^<]*)>", "\"<$1>");
xml = xml.replaceAll("</([^<]*)>\"", "</$1>\"");
xml = xml.replaceAll("\"([^<]*)<([^<]*)>([^<]*)\"", "\"$1<$2>$3\"");
return xml;
}