org.xml.sax.SAXParseException: сущность "ndash" была указана, но не объявлена - PullRequest
4 голосов
/ 10 марта 2010

Я анализирую следующее ...

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE tox:message SYSTEM "http://tox.sf.net/tox/dtd/tox.dtd">
<tox:message xmlns:tox="http://tox.sourceforge.net/">
<tox:model owner="scott" package="queue" function="appendFact">
<tox:parameter value="  By John Smith   &ndash; Thu Feb 25, 4:54 pm ET&lt;br&gt;&lt;br&gt;NEW YORK (Reuters) &ndash; Nothing happened today."/>
<tox:parameter value="10245"/>
</tox:model>
</tox:message>

... используя saxon9.jar, но получил ...

org.xml.sax.SAXParseException: The entity "ndash" was referenced, but not declared.

Как мне "объявить" сущность для разбора? Как бы я мог предвидеть все потенциальные объекты?

Ответы [ 2 ]

1 голос
/ 10 марта 2010

Вы объявляете это в DTD. Поскольку вы используете внешний DTD, он должен объявить его для вас. Содержит ли tox.dtd объявление для ndash?

Если этого не произойдет, вам нужно сделать что-то вдохновленное:

<!DOCTYPE foo [
    <!ENTITY % MathML SYSTEM "http://www.example.com/MathML.dtd">
    %MathML;
    <!ENTITY % SpeechML SYSTEM "http://www.example.com/SpeechML.dtd">
    %SpeechML;
]>

Вы можете использовать один из стандартных XHTML-кодов, который определяет ndash, например.

Если tox.dtd объявляет об этом, вам нужен распознаватель, чтобы найти его.

0 голосов
/ 10 марта 2010

Я думаю, вы должны использовать http://java.sun.com/j2se/1.4.2/docs/api/org/xml/sax/EntityResolver.html

...