Выделение специальных символов с помощью Apache XML Beans - PullRequest
0 голосов
/ 04 июня 2010

У меня есть схема, которую я использую XmlBeans , чтобы ограничить объекты Java. Я не имею никакого контроля над данными, которые поступают.

Одно из таких полей выглядит как <Name>Barnes & Noble</Name>.

Сбой при разборе символа & с лексической ошибкой. Есть ли способ указать параметр при разборе файлов XML, чтобы игнорировать некоторые специальные символы?

Любая помощь, которую вы можете оказать, будет великолепной.

Ответы [ 3 ]

3 голосов
/ 04 июня 2010

Нет. Это неверный XML. Амперсанд должен быть экранирован в "& amp;".

Вы можете вручную отключить все амперсанды, прежде чем анализировать их как XML, но это может испортить другие сущности XML.

0 голосов
/ 11 ноября 2016

Вы можете использовать XmlOptionCharEscapeMap.

Из Javadocs:

Этот класс используется для настройки карты, содержащей символы для убежали. Символы могут быть экранированы как шестнадцатеричные, десятичные или как предопределенные объект (этот последний параметр применяется только к 5 символам, определенным как предопределенные сущности в спецификации XML).

Например:

  XmlOptionCharEscapeMap escapes = new XmlOptionCharEscapeMap();
  escapes.addMapping('A', XmlOptionCharEscapeMap.HEXADECIMAL);
  escapes.addMapping('B', XmlOptionCharEscapeMap.DECIMAL);
  escapes.addMapping('>', XmlOptionCharEscapeMap.PREDEF_ENTITY);

  XmlOptions opts = new XmlOptions();
  opts.setSaveSubstituteCharacters(escapes);
0 голосов
/ 22 февраля 2015

Вы можете проанализировать <Name>Barnes & Noble</Name> как XPL и затем передать его в любой процесс XML. XPL похож на XML, за исключением того, что он позволяет использовать специальные символы XML в текстовых элементах .

...