2017-06-13 48 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