2014-10-30 67 views
0

如何確定給定文件是否是JAVA中的xml valide文件?如何確定給定文件是否爲xml valide文件

例如:

bool valide = IsAnXMLFile(new File("file.txt")); 

感謝的。

+1

你的意思是有效的爲*以及形成*或*有效根據架構*? – meskobalazs 2014-10-30 11:12:43

+3

如果你想檢查一個XML模式檢查這個問題:http://stackoverflow.com/questions/15732/whats-the-best-way-to-validate-an-xml-file-against-an-xsd -file – duffy356 2014-10-30 11:19:29

+1

試着檢查這個答案:http://stackoverflow.com/questions/6362926/xml-syntax-validation-in-java – drgPP 2014-10-30 11:23:34

回答

0
public boolean valide(String filename) throws JDOMException, IOException 
{ 
     SAXBuilder builder = new SAXBuilder(); 
     try{ 
       Document doc = builder.build(new File(filename));  
       } catch (JDOMParseException ex) { 
       return false; 
       } 
     return true; 
} 
+0

這只是在文檔中指定了DTD時進行的驗證,或者是指定了內聯文檔類型。對於基於模式的驗證,請參閱上文。 – shillner 2014-10-30 12:45:43

1

只需通過解析器加載文件即可檢查格式良好性。如果文件引用了一個dtd,那麼它也會根據此dtd進行驗證(這要求dtd存在於指定的位置)。如果您使用模式語言(f.i. xsd),則需要在加載時手動驗證文件。 JAXP是這裏的關鍵詞!

這裏是一個小片段進行驗證對抗模式:

SchemaFactory schemaFactory = SchemaFactory.newInstance(schemaLanguage.getId()); 
schemaFactory.setResourceResolver(getLSResourceResolver()); //optional 

Schema schema = schemaFactory.newSchema(schemaURL) 
Validator validator = schema.newValidator(); 
validator.validate(new StreamSource(new File(...))); 
+0

你能完成你的代碼....「架構模式= .. 。「 – 2014-10-30 11:36:35

相關問題