1

重複の可能性:
DocumentBuilder.parse が DTD 参照を無視するようにする

ここに私のサンプルXMLがあります

<?xml version="1.0" standalone="no"?>
<!DOCTYPE factory-requirements SYSTEM "factory.7.0.dtd">
<data name="product">
  <product name="container">
    <one>20 feet</one>
    <two>50 feet</two>
  </product>
</data>

このファイルをドキュメントに渡そうとすると、エラーが発生します。

java.io.FileNotFoundException: C:\Documents and Settings\johnB\workspace\project\factory.7.0.dtd (The system cannot find the file specified)

私が持っていないDTDも探しているようです。このファイルを XML として解析し、製品を取得するだけです。私は DTD を持っておらず、ベンダーからのみこの XML を取得しているため、DTD に対してこの XML を検証するつもりはありません。

これが私のコードです:

File fstream = new File("C:/Documents and Settings/johnB/workspace/project/factory_product.xml");
DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder dBuilder = dbFactory.newDocumentBuilder();
Document doc = dBuilder.parse(fstream);
doc.getDocumentElement().normalize();

<!DOCTYPE factory-requirements SYSTEM "factory.7.0.dtd">解析時に無視するにはどうすればよいですか?

4

0 に答える 0