解析XML文件時忽略內聯DTD有問題讀取與DTD聲明中一個XML文件(外部聲明解決)。我正在使用SAX方法(javax.xml.parsers.SAXParser)。當沒有DTD定義解析看起來像例如StartEement-Characters-StartElement-Characters-EndElement-Characters ......所以在Start或End元素之後立即調用字符方法,這就是我需要它的方式。當DTD處於文件解析架構更改爲例如StartElement-StartElement-StartElement-Characters-EndEement-EndEement-EndEement時。而且我需要在每個元素之後使用Characters方法。所以我問有沒有辦法來防止解析模式的改變?我如何在Java
我的代碼:
SAXParserFactory factory = SAXParserFactory.newInstance();
factory.setValidating(false);
SAXParser parser = factory.newSAXParser();
XMLReader reader = parser.getXMLReader();
reader.setFeature("http://xml.org/sax/features/validation", false);
reader.setFeature("http://apache.org/xml/features/nonvalidating/load-dtd-grammar", false);
reader.setFeature("http://apache.org/xml/features/nonvalidating/load-external-dtd", false);
reader.setFeature("http://xml.org/sax/features/external-general-entities", false);
reader.setFeature("http://xml.org/sax/features/external-parameter-entities", false);
reader.setFeature("http://xml.org/sax/features/use-entity-resolver2", false);
reader.setFeature("http://apache.org/xml/features/validation/unparsed-entity-checking", false);
reader.setFeature("http://xml.org/sax/features/resolve-dtd-uris", false);
reader.setFeature("http://apache.org/xml/features/validation/dynamic", false);
reader.setFeature("http://apache.org/xml/features/validation/schema/augment-psvi", false);
reader.parse(input);
還有就是我試圖解析link(它在我的Dropbox的鏈接)的XML文件。
非常感謝。它完美的作品。 – JavaXML 2012-04-21 21:39:54