在网上搜到这样的内容:
我现在需要解析一个xml文件,但我不需要关心他的dtd,我该怎么设置来让解析程序知道呢?
我用的是stax解析xml文件。
xml文件开始部分如下:
<?xml version="1.0" encoding="gb2312"?> <!DOCTYPE NMSI_PM SYSTEM "NPI_PM.DTD">
我的解析代码如下:
XMLInputFactory factory = XMLInputFactory.newInstance(); XMLStreamReader reader = factory.createXMLStreamReader(isr); while (reader.hasNext()) { int eventType = reader.next(); switch (eventType) { case XMLStreamConstants.START_ELEMENT: //code to handle break; case XMLStreamConstants.CHARACTERS: //code to handle break; case XMLStreamConstants.END_ELEMENT: //handle break; } } reader.close();
我没有对dtd进行处理,但运行时就会报错:找不到dtd文件。
我想让stax不在关心dtd声明的部分,该怎么设置呢?
试试 这个呢
XMLInputFactory f = XMLInputFactory.newInstance();
f.setProperty("javax.xml.stream.supportDTD",Boolean.FALSE);
f.setProperty("http://java.sun.com/xml/stream/properties/ignore-external-dtd",Boolean.TRUE);