小编Str*_*Bad的帖子

禁用在JDOM/DOM中解析XML实体

我正在编写一个用于XML文件后处理的Java应用程序.这些xml文件来自Semantic Mediawiki的RDF-Export,因此它们具有rdf/xml语法.

我的问题如下:当我读取xml文件时,文件中的所有实体都被解析为它们在Doctype中指定的值.例如,我有Doctype

<!DOCTYPE rdf:RDF[
<!ENTITY wiki 'http://example.org/smartgrid/index.php/Special:URIResolver/'>
..
]>
Run Code Online (Sandbox Code Playgroud)

并在根元素中

<rdf:RDF
xmlns:wiki="&wiki;"
..
>
Run Code Online (Sandbox Code Playgroud)

这意味着

<swivt:Subject rdf:about="&wiki;Main_Page">
Run Code Online (Sandbox Code Playgroud)

<swivt:Subject rdf:about="http://example.org/smartgrid/index.php/Special:URIResolver/Main_Page">
Run Code Online (Sandbox Code Playgroud)

我尝试过使用JDOM和标准Java DOM.我认为这里的代码与标准DOM相关:

DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
        factory.setExpandEntityReferences(false);
        factory.setFeature("http://apache.org/xml/features/nonvalidating/load-external-dtd", false);
Run Code Online (Sandbox Code Playgroud)

并为JDOM

SAXBuilder builder = new SAXBuilder();
    builder.setExpandEntities(false); //Retain Entities
    builder.setValidation(false);
    builder.setFeature("http://xml.org/sax/features/resolve-dtd-uris", false);
Run Code Online (Sandbox Code Playgroud)

但是实体在整个xml文档中得到了解决.我错过了什么吗?搜索时间只引导我进入'ExpandEntities'命令,但它们似乎不起作用.

任何提示都非常感谢:)

java xml parsing entity sax

4
推荐指数
2
解决办法
7767
查看次数

标签 统计

entity ×1

java ×1

parsing ×1

sax ×1

xml ×1