Как удалить <и> в XML, который является частью сообщения XML

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

<StartTag>
    <MyValueTag>And the value itself contains a < bracket that makes the XML invalid</MyValueTag>
</StartTag>

XML содержит символ "<", который делает XML недействительным.

Сейчас самый простой способ - это исправить источник XML, но, к сожалению, я не могу контролировать создание XML. В нем есть сообщения типа "Значение меньше 10", предполагаемое "меньше чем".

Есть ли в любом случае, как я могу проверить XML для таких вещей и избежать этих символов это?

Я попытался посмотреть на этот пост, где парень указал, что мы должны использовать JTidy. Но когда я попробовал это, он не удаляет <:

Tidy tidy = new Tidy();
tidy.setInputEncoding("UTF-8");
tidy.setOutputEncoding("UTF-8");
tidy.setWraplen(Integer.MAX_VALUE);
tidy.setPrintBodyOnly(true);
tidy.setXmlOut(true);
tidy.setSmartIndent(true);
ByteArrayInputStream inputStream = new ByteArrayInputStream(data.getBytes("UTF-8"));
ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
tidy.parseDOM(inputStream, outputStream);

1 ответ

Решение

Тот факт, что XML является недействительным, означает, что вы не сможете использовать действительный анализатор XML для его чтения и исправления. Если вы не можете найти авторов программного обеспечения, которые пишут файл для исправления ошибки, вам придется придумать какое-то решение для конкретного приложения.

Например, если вы знали, что блуждающий символ <MyValue> элемент, и если бы вы знали, что никакие другие элементы не могут возникнуть как дети <MyValue>тогда было бы довольно просто написать программу, которая распознает начальный и конечный теги и заменяет любые <символы, встречающиеся между ними, на &#60;

Конечно, если проблема не так проста, то решение не будет таким простым; но, надеюсь, вы можете сделать это проще, чем решить общую проблему для XML.

После того, как вы исправили несколько файлов "вручную", остановитесь и спросите себя: "Как я узнал, что

Другие вопросы по тегам