Rumah  >  Artikel  >  Java  >  Bagaimana Menghuraikan Fail XML Mengabaikan Rujukan DTD Luaran di Java?

Bagaimana Menghuraikan Fail XML Mengabaikan Rujukan DTD Luaran di Java?

Linda Hamilton
Linda Hamiltonasal
2024-10-28 21:28:31380semak imbas

How to Parse XML Files Ignoring External DTD References in Java?

Mengabaikan Rujukan DTD dalam DocumentBuilder.parse

Apabila menghuraikan fail XML yang merujuk kepada DTD luaran (Definisi Jenis Dokumen), anda mungkin menghadapi ralat jika DTD tidak tersedia atau jika anda tidak mahu mengesahkannya. Untuk menghuraikan fail sambil mengabaikan rujukan DTD, ikut langkah berikut:

Penyelesaian:

Konfigurasikan DocumentBuilderFactory untuk melumpuhkan pengesahan DTD:

<code class="java">DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();

// Disable validation
dbf.setValidating(false);

// Disable namespace awareness (optional)
dbf.setNamespaceAware(false);

// Disable specific features that load DTDs
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);</code>

Setelah DocumentBuilderFactory dikonfigurasikan, anda boleh meneruskan dengan mencipta DocumentBuilder dan menghuraikan fail:

<code class="java">DocumentBuilder db = dbf.newDocumentBuilder();
Document doc = db.parse(f);</code>

Dengan melumpuhkan pengesahan DTD dan ciri berkaitan, penghurai akan mengabaikan rujukan kepada DTD luaran dan meneruskan dengan menghurai fail XML tanpa menimbulkan ralat. Adalah penting untuk ambil perhatian bahawa penyelesaian ini mungkin tidak sesuai untuk semua senario, seperti apabila anda bergantung pada DTD untuk pengesahan data.

Atas ialah kandungan terperinci Bagaimana Menghuraikan Fail XML Mengabaikan Rujukan DTD Luaran di Java?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn