ホームページ  >  記事  >  Java  >  Java で外部 DTD 参照を無視して XML ファイルを解析する方法

Java で外部 DTD 参照を無視して XML ファイルを解析する方法

Linda Hamilton
Linda Hamiltonオリジナル
2024-10-28 21:28:31380ブラウズ

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

DocumentBuilder.parse での DTD 参照の無視

外部 DTD (文書型定義) を参照する XML ファイルを解析するときに、次のような問題が発生する可能性があります。 DTD が利用できない場合、または DTD に対して検証したくない場合は、エラーが発生します。 DTD 参照を無視してファイルを解析するには、次の手順に従います:

解決策:

DTD 検証を無効にするように DocumentBuilderFactory を構成します:

<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>

DocumentBuilderFactory が構成されたら、DocumentBuilder の作成とファイルの解析に進むことができます。

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

DTD 検証と関連機能を無効にすると、パーサーは外部 DTD への参照を無視し、XML ファイルの解析を続行します。エラーを発生させずに。このソリューションは、データ検証に DTD に依存する場合など、すべてのシナリオに適しているわけではないことに注意することが重要です。

以上がJava で外部 DTD 参照を無視して XML ファイルを解析する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。