org.xml.sax.SAXParseException:实体“ndash”被引用,但未声明

发布于 2024-08-24 16:53:37 字数 726 浏览 13 评论 0原文

我正在解析以下内容...

<?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.

我如何“声明”一个实体进行解析?我如何才能预测所有潜在实体?

I'm parsing the the following...

<?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   – Thu Feb 25, 4:54 pm ET<br><br>NEW YORK (Reuters) – Nothing happened today."/>
<tox:parameter value="10245"/>
</tox:model>
</tox:message>

... using saxon9.jar, but got...

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

How do I "declare" an entity for a parse? How would I be able to anticipate all the potential entities?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

流年已逝 2024-08-31 16:53:37

您在 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;
]>

例如,您可以使用定义 ndash 的标准 XHTML dtd 之一。

如果 tox.dtd 确实声明了它,那么您需要一个解析器来查找它。

You declare it in a DTD. Since you are using an external DTD, it has to declare it for you. Does tox.dtd contain a declaration for ndash?

If it does not, you need to do something inspired by:

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

You could use one of the standard XHTML dtds that defines ndash, for example.

If tox.dtd does declare it, then you need a resolver to find it.

不甘平庸 2024-08-31 16:53:37

我认为你应该使用 EntityResolver。

I think you should use EntityResolver.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文