DocumentBuilder.parse による DTD 参照の無視
外部 DTD (文書型宣言) への参照を含む XML ファイルを解析すると、エラーが発生する場合がありますDTD が利用できないかアクセスできない場合。この問題を解決し、解析中に DTD 参照を無視するには、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();
これらの機能を無効にすると、DocumentBuilder は DTD 参照を無視して XML の解析を続行します。
特定の機能オプションはパーサーの実装によって異なる場合があります。たとえば、Xerces2 パーサーのドキュメントでは、DTD のロードと検証の無効化に関する追加の洞察が提供されます。これらの機能を設定すると、外部 DTD を必要とせずに XML ファイルを解析でき、処理エラーを最小限に抑えることができます。
以上がDocumentBuilder.parse で XML ファイルを解析するときに DTD 参照を無視するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。