2

それに関して1つの質問を見つけましたが、それは古い質問であり、回答がJava XML処理エンティティの問題で機能しなくなったようです?

だから私の問題は、私が実際にXMLファイルを使用していて、Entity References. DocumentBuilderこれらのエンティティ参照をそのままにして、解析しないようにしたいと思います。ただし、それを解析しようとすると、The entity "entityname" was referenced, but not declared.例外が発生します。

これは私のXmlParserクラスコンストラクターです:

public XmlParser(File file) throws ParserConfigurationException,
        SAXException, IOException {
    String provider = "com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderFactoryImpl";
    DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(provider, null);
    factory.setExpandEntityReferences(false);
    factory.setValidating(false);
    factory.setFeature(
            "http://apache.org/xml/features/nonvalidating/load-external-dtd",
            false);
    DocumentBuilder dBuilder = factory.newDocumentBuilder();
    document = dBuilder.parse(file);
    document.getDocumentElement().normalize();
}

DocumentBuilderFactory.newInstance()また、パラメーターなしで使用しようとしたところ、同じエラーが発生しました。

この問題を解決するにはどうすればよいですか?

XML の例:

<?xml version="1.0" encoding="UTF-8"?>
<chapter >
    <title>&entityname; Some Title</title>
</chapter>

その例外:

[Fatal Error] NHS.xml.keyref:3:21: The entity "entityname" was referenced, but not declared.
Exception in thread "main" org.xml.sax.SAXParseException; systemId: file:/C:/somedir/NHS.xml.keyref; lineNumber: 3; columnNumber: 21; The entity "entityname" was referenced, but not declared.
    at com.sun.org.apache.xerces.internal.parsers.DOMParser.parse(Unknown Source)
    at com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderImpl.parse(Unknown Source)
    at javax.xml.parsers.DocumentBuilder.parse(Unknown Source)
    at au.gov.nehta.mdht.datahierarchy2dita.XmlParser.<init>(XmlParser.java:43)
    at au.gov.nehta.mdht.datahierarchy2dita.Parse.parseDocbookToDita(Parse.java:53)
    at au.gov.nehta.mdht.datahierarchy2dita.Parse.main(Parse.java:83)
4

0 に答える 0