Разбор xml с внутренними объявлениями xml в кавычках

Я пытаюсь разобрать предоставленные мне XML-файлы. Я разбираю файлы с помощью javax.xml DocumentBuilder. Файлы могут содержать теги, содержащие внутренний xml в кавычках, который я не хочу анализировать.

Сокращенный пример:

<Property Name="Value" PreFormatted="1">"<?xml version='1.0' encoding='UTF-16'?>"</Property>

Когда я запускаю парсер так:

Document document = DocumentBuilderFactory.newInstance()
    .newDocumentBuilder()
    .parse(new InputSource(new ByteArrayInputStream(xml.getBytes("utf-8"))));

Я получаю следующую ошибку:

[Fatal Error] :1:106: The processing instruction target matching "[xX][mM][lL]" is
                      not allowed.

Я понимаю, что эта ошибка возникает, когда в коде имеется более одного объявления xml, но я не могу понять, как запретить синтаксическому анализатору пытаться анализировать цитируемый xml.

Как я могу предотвратить анализ цитируемого xml?


person Christian Beasley    schedule 02.11.2016    source источник
comment
Это незаконный XML. Вы не можете разобрать его.   -  person SLaks    schedule 02.11.2016
comment
Вам придется вернуться к тому, кто дал вам этот XML, и сказать им, что это неправильно. Кавычки должны быть сделаны с сущностями (&quot;), а не с самим "..   -  person Joe C    schedule 02.11.2016
comment
Да, это то, что я понял. В Apache commons есть метод StringEscapeUtils.escapeXml10, который я использовал для экранирования специальных символов... Однако, по-видимому, существует проблема с экранированием одинарных кавычек. Мне пришлось вручную использовать StringUtils.replace. Спасибо.   -  person Christian Beasley    schedule 03.11.2016