2013-07-15 11 views
4

我需要忽略下面XML中的DTD文件路径以避免文件未找到异常。忽略XOM解析器中的DTD元素以避免没有文件发现异常

<?xml version='1.0' encoding="UTF-8"?> 
    <!DOCTYPE Document SYSTEM "/usr/home/billadm/release/binaries_39862//CMS/resource.4444/docgenlib/BillingDocument.dtd"> 
    <Document Sender="Testing Me" Id="130713BA00873650912" BAId="BA0087365091"> 
    <Summary> 
    ... 
    </Summary> 

我使用XOM解析器使用以下Java代码解析XML文件。我相信我不需要这个DTD。我读到entityResolvers和setFeature为假,但我无法在应用任何低于XOM分析器

public static void main (String [] args) { 

     try { 

      File folder = new File("D:\\Yahya_sum/"); 
      File[] listOfFiles = folder.listFiles(); 

      for (int i = 0; i < listOfFiles.length; i++) { 
        if (listOfFiles[i].isFile()) { 
        System.out.println("File " + listOfFiles[i].getName()); 
        } else if (listOfFiles[i].isDirectory()) { 
        System.out.println("Directory " + listOfFiles[i].getName()); 
        } 

      String filename = "D:\\Yahya_sum\\"+listOfFiles[i].getName(); 

      File fXmlFile = new File (filename); 

      Builder builder = new Builder(); 



      nu.xom.Document doc = builder.build(fXmlFile); 




      String outputFile = i+" - sum.txt"; 

      PrintWriter writer = new PrintWriter(outputFile, "UTF-8"); 

      nu.xom.Element summary = doc.getRootElement().getFirstChildElement("Summary"); 
+0

的可能的复制[制作DocumentBuilder.parse忽略DTD引用(https://stackoverflow.com/questions/ 155101 /化妆的DocumentBuilder,语法分析的忽略DTD引用) –

回答

7

我进口SAX库

import java.io.File; 
import java.io.PrintWriter; 
import org.xml.sax.XMLReader; 
import org.xml.sax.helpers.XMLReaderFactory; 

创建SAX XML阅读器

XMLReader xmlReader = XMLReaderFactory.createXMLReader(); 

设置功能为假

xmlReader.setFeature("http://apache.org/xml/features/nonvalidating/load-external-dtd", false); 

创建使用上述的XMLReader

Builder builder = new Builder(xmlReader); 
建设者

使用XOM解析器在解析

nu.xom.Document doc = builder.build(fXmlFile);