2011-01-20 127 views

回答

2

處理如果在XML文件中沒有指定的DTD,你可以使用一個變壓器將其添加,然後解析它如下圖所示:

DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); 
DocumentBuilder db = factory.newDocumentBuilder(); 

//parse file into DOM 
Document doc = db.parse(new File("file.xml")); 
DOMSource source = new DOMSource(doc); 

//now use a transformer to add the DTD element 
TransformerFactory tf = TransformerFactory.newInstance(); 
Transformer transformer = tf.newTransformer(); 
transformer.setOutputProperty(OutputKeys.DOCTYPE_SYSTEM, "/path/to/file.dtd"); 
StringWriter writer = new StringWriter(); 
StreamResult result = new StreamResult(writer); 
transformer.transform(source, result); 

//finally parse the result. 
//this will throw an exception if the doc is invalid 
db.parse(new InputSource(new StringReader(writer.toString()))); 
+0

可以用JDOM來做到這一點嗎? – 2011-01-20 16:49:54