我正在爲XML文件的後處理編寫Java應用程序。 這些XML文件來自語義媒體註釋的RDF導出,因此它們具有rdf/xml語法。禁用在JDOM/DOM中解析XML實體
我的問題如下: 當我讀取xml文件時,文件中的所有實體都被解析爲它們在Doctype中指定的值。例如,在文檔類型我有
<!DOCTYPE rdf:RDF[
<!ENTITY wiki 'http://example.org/smartgrid/index.php/Special:URIResolver/'>
..
]>
和在根元素
<rdf:RDF
xmlns:wiki="&wiki;"
..
>
這意味着
<swivt:Subject rdf:about="&wiki;Main_Page">
變得
<swivt:Subject rdf:about="http://example.org/smartgrid/index.php/Special:URIResolver/Main_Page">
我已經使用JDOM和試圖標準的Java DOM。 我認爲與此有關的代碼是標準DOM:
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
factory.setExpandEntityReferences(false);
factory.setFeature("http://apache.org/xml/features/nonvalidating/load-external-dtd", false);
和JDOM
SAXBuilder builder = new SAXBuilder();
builder.setExpandEntities(false); //Retain Entities
builder.setValidation(false);
builder.setFeature("http://xml.org/sax/features/resolve-dtd-uris", false);
但實體是在整個XML文檔沒有少得到解決。 我錯過了什麼嗎?搜索小時數只讓我看到'ExpandEntities'命令,但它們似乎不起作用。
任何暗示的高度讚賞:)