Mengabaikan Rujukan DTD dengan DocumentBuilder.parse
Apabila menghuraikan fail XML dengan rujukan kepada DTD luaran (Pengisytiharan Jenis Dokumen), ralat mungkin berlaku jika DTD tidak tersedia atau tidak boleh diakses. Untuk mengatasi isu ini dan mengabaikan rujukan DTD semasa menghuraikan, tetapkan pelbagai ciri pada DocumentBuilderFactory:
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); dbf.setValidating(false); dbf.setNamespaceAware(true); dbf.setFeature("http://xml.org/sax/features/namespaces", false); dbf.setFeature("http://xml.org/sax/features/validation", false); dbf.setFeature("http://apache.org/xml/features/nonvalidating/load-dtd-grammar", false); dbf.setFeature("http://apache.org/xml/features/nonvalidating/load-external-dtd", false); DocumentBuilder db = dbf.newDocumentBuilder();
Dengan ciri ini dilumpuhkan, DocumentBuilder akan mengabaikan rujukan DTD dan meneruskan penghuraian XML.
Pilihan ciri khusus mungkin berbeza-beza bergantung pada pelaksanaan parser. Contohnya, dokumentasi penghurai Xerces2 menyediakan cerapan tambahan untuk melumpuhkan pemuatan dan pengesahan DTD. Dengan menetapkan ciri ini, anda boleh menghuraikan fail XML tanpa memerlukan DTD luaran, memastikan ralat pemprosesan diminimumkan.
Atas ialah kandungan terperinci Bagaimanakah saya boleh mengabaikan rujukan DTD apabila menghuraikan fail XML dengan DocumentBuilder.parse?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!