2012-11-25 91 views
3

我已經在java中使用DOM創建了一個XML文檔。我無法添加文檔類型。我想要這樣的文檔類型。如何使用DOM(JAVA)在XML文檔中添加Doctype

<!DOCTYPE IndInfo PUBLIC "EDAFileSomething" "EDAFileSomething_2_0.dtd"> 

這裏是文檔創建代碼。

DocumentBuilderFactory docFactory = DocumentBuilderFactory.newInstance(); 
DocumentBuilder docBuilder = docFactory.newDocumentBuilder(); 
Document doc = docBuilder.newDocument(); 

這是變壓器對象代碼。

TransformerFactory transformerFactory = TransformerFactory.newInstance(); 
      Transformer transformer = null; 
      try { 
       transformer = transformerFactory.newTransformer(); 
      } catch (TransformerConfigurationException ex) { 
       Logger.getLogger(Reader.class.getName()).log(Level.SEVERE, null, ex); 
      } 
      DOMSource source = new DOMSource(doc); 
      try { 

       StreamResult result = new StreamResult(System.out); 
       transformer.transform(source, result); 
      } catch (TransformerException ex) { 
       Logger.getLogger(Reader.class.getName()).log(Level.SEVERE, null, ex); 
      } 

      System.out.println("File saved!"); 

回答

9

您可以使用DOM構建doctype並將doctype設置爲輸出屬性。

TransformerFactory transformerFactory = TransformerFactory.newInstance(); 
Transformer transformer = transformerFactory.newTransformer(); 
transformer.setOutputProperty(OutputKeys.INDENT, "yes"); 
transformer.setOutputProperty(OutputKeys.OMIT_XML_DECLARATION, "no"); 
transformer.setOutputProperty(OutputKeys.METHOD, "xml"); 
DOMImplementation domImpl = document.getImplementation(); 
DocumentType doctype = domImpl.createDocumentType("doctype", 
    "-//Oberon//YOUR PUBLIC DOCTYPE//EN", 
    "YOURDTD.dtd"); 
transformer.setOutputProperty(OutputKeys.DOCTYPE_PUBLIC, doctype.getPublicId()); 
transformer.setOutputProperty(OutputKeys.DOCTYPE_SYSTEM, doctype.getSystemId()); 
DOMSource source = new DOMSource(document); 
StreamResult result = new StreamResult(new File(database)); 
transformer.transform(source, result); 
+0

這是什麼版本和文件包在這裏?我的版本中沒有getImplementation()。 –

+0

getImplementation()用於DocumentBuilder對象docBuilder – Repikas

相關問題