2017-06-13 52 views
0

我試圖驗證使用XSD架構的XML,但它拋出驗證的時間,java.net.MalformedURLException:無協議,而驗證XML字符串XSD架構

java.net.MalformedURLException:沒有協議:

我做了什麼至今,

 public boolean ValidateXML(String xmlContent) throws Exception { 
     try 
     { 
      SchemaFactory factory = SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI); 
      Schema schema = factory.newSchema(getClass().getClassLoader().getResource("ABC/XYX/PQR.xsd")); 
      Validator validator = schema.newValidator(); 
      validator.validate(new StreamSource(xmlContent)); 
}... 

到底哪裏出問題了,validator.validate該步驟中,拋出一個異常,我需要在這裏提供編碼字符串?

如果我有文件做我的意思是xmlContent從文件,

validator.validate(new StreamSource(new File(filePath))); 

那麼它的正常工作。 我不想從一個文件,但是從字符串對象

回答

0

XML內容轉換您的字符串轉換爲StreamResource:

validator.validate(new StreamSource(new ByteArrayInputStream(xmlContent.getBytes(StandardCharsets.UTF_8)))); 
+0

是它的工作,謝謝。它需要被編碼,不是String處理它。 – tyro

+0

問題不是編碼,而是StreamResource構造函數中的錯誤類型。如果您使用String參數調用StreamResource構造函數,它會嘗試將此字符串解析爲URL。在文檔中查看: https://docs.oracle.com/javase/7/docs/api/javax/xml/transform/stream/StreamSource.html#StreamSource(java.lang.String) 我的建議調用具有InputStream參數的StreamResource構造函數,並使用InputStream包裝xmlContent字符串。 –

+0

清除,再次感謝 – tyro