java.net.MalformedURLException:使用xsd模式验证xml字符串时没有协议

时间:2017-06-13 14:40:08

标签: java xml xsd

我正在尝试使用xsd架构验证xml,但在验证时它会抛出,

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

出了什么问题,验证器。验证这一步它抛出异常,我需要在这里提供编码字符串吗?

如果我用文件表示我的意思是来自文件的xmlContent,

validator.validate(new StreamSource(new File(filePath)));
然后它工作正常。 我不想要文件中的xml内容,而是来自字符串对象

2 个答案:

答案 0 :(得分:2)

将您的字符串转换为StreamResource:

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

答案 1 :(得分:1)

巴拉兹·尼姆斯的回答很好。对于Java的旧版本,您可能没有StandardCharsets.UTF_8可用。我们有一个Java 1.6应用程序,并使用了兼容的Apache Commons库,因此可以使用String xml

import org.apache.commons.codec.CharEncoding;
validator.validate(new StreamSource(new ByteArrayInputStream(xml.getBytes(org.apache.commons.codec.CharEncoding.UTF_8))));