Я получаю XML-документ с метаданными об онлайн-ресурсах, которые мне нужно проанализировать. Среди различных элементов метаданных - это набор тегов, которые разделены запятой. Вот пример:В XML-документе можно ли отличить символ, закодированный сущностью, и тот, который не является?
<tags>Research skills, Searching, evaluating and referencing</tags>
Проблема в том, что один из этих «тегов» содержит в себе запятую. Запятая в теге закодирована, но запятые, предназначенные для разметки тегов, не являются. Я (в настоящее время) использую getText() method on org.dom4j.Node для чтения текстового содержимого элемента <tags>
, который возвращает строку.
Проблема в том, что я не могу - насколько я знаю, - различать закодированную запятую (из тех, которые не закодированы) в получаемой мной строке.
Короткая запись собственного анализатора XML, есть ли другой способ доступа к текстовому контенту этого узла в более «сыром» состоянии? (То есть состояние, в котором закодирована запятая еще закодирован.)
Проблема также возникает в контексте обработки XSLT, там вы можете использовать «LexEv» от Andrew Welch (http://andrewjwelch.com/lexev/) вместо обычного XMLReader ', он преобразует лексические события, включая ссылки на символы, в разметку соответственно узлов (например, ссылка на символ' 'сообщается как' lexev: entity> '). Возможно, вы захотите попробовать, может ли он использоваться вместе с вашим DOM API. –
@Martin, вы уверены, что LexEv сообщит о ссылках на символы? Я не думал, что эта информация доступна на уровне SAX.Я знаю, что он сообщает обрабатываемые сущности ссылки, но это другое дело. –
Когда я написал свой комментарий, я опирался на документацию, но теперь я попытался запустить Saxon 9 вместе с LexEx и преобразованием идентичности в примере выше в вопросе, и он выдает корневой элемент как ' навыки поиска, поиск , lexev: char-ref> оценка и ссылка ', так что да, он в состоянии идентифицируйте ссылки на символы, даже если обычные события SAX не покрывают их. Мне также нужно было положить 'xercesImpl.jar' в путь класса. –