2013-07-15 3 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> 

나는 자바 코드 아래를 사용하여 XML 파일을 구문 분석 XOM 파서를 사용합니다. 나는이 DTD가 필요 없다고 확신한다. 나는 거짓으로 entityResolvers 및 setFeature에 대해 읽어하지만 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(); 

설정을 가져

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

가능한 중복 https://stackoverflow.com/questions/ ([DocumentBuilder.parse가 DTD 참조를 무시 확인] 155101/make-documentbuilder-parse-ignore-dtd-references) –

답변

7

나는 XOM 파서 아래에 어떤을 적용 할 수없는 허위로 표시하는 기능

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);