使用 JDOM 解析带有未在 XML 文件中声明的外部 DTD 的 XML 文件
在我的 XML 文件中,我有一些实体,例如 ’
因此,我为 XML 文档创建了一个 DTD 标记来定义这些实体。下面是用于读取 XML 文件的 Java 代码。
SAXBuilder builder = new SAXBuilder();
URL url = new URL("http://127.0.0.1:8080/sample/subject.xml");
InputStream stream = url.openStream();
org.jdom.Document document = builder.build(stream);
Element root = document.getRootElement();
Element name = root.getChild("name");
result = name.getText();
System.err.println(result);
如何更改 Java 代码以通过 HTTP 检索 DTD,从而允许 XML 文档的解析无错误?
xml 文档的简化示例。
<main>
<name>hello ‘ world ’ foo & bar </name>
</main>
In my XML file I have some entities such as ’
So I have created a DTD tag for my XML document to define these entities. Below is the Java code used to read the XML file.
SAXBuilder builder = new SAXBuilder();
URL url = new URL("http://127.0.0.1:8080/sample/subject.xml");
InputStream stream = url.openStream();
org.jdom.Document document = builder.build(stream);
Element root = document.getRootElement();
Element name = root.getChild("name");
result = name.getText();
System.err.println(result);
How can I change the Java code to retrieve a DTD over HTTP to allow the parsing of my XML document to be error free?
Simplified example of the xml document.
<main>
<name>hello ‘ world ’ foo & bar </name>
</main>
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
执行此操作的一种方法是读取文档,然后使用转换器对其进行验证:
另一种方法是将 XML 标题替换为 XML 标题加上 DTD 引用
将其替换
为:
当然,您将替换第一次出现的情况仅而不是尝试遍历整个 xml 文档
您必须通过将 true(validate) 传递给其构造函数来实例化 SAXBuilder:
或调用:
One way to do this would be to read the document and then validate it with the transformer:
Another way would be to replace the XML title with the XML title plus the DTD reference
Replace this:
with this:
Of course you would replace the first occurance only and not try to go through the whole xml document
You have to instantiate the SAXBuilder by passing true(validate) to its constructor:
or call: