Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/381.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
java.net.MalformedURLException:使用xsd架构验证xml字符串时没有协议_Java_Xml_Xsd - Fatal编程技术网

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

java.net.MalformedURLException:使用xsd架构验证xml字符串时没有协议,java,xml,xsd,Java,Xml,Xsd,我试图用xsd模式验证xml,但在验证时 java.net.MalformedURLException:无协议: 到目前为止,我所做的是 public boolean ValidateXML(String xmlContent) throws Exception { try { SchemaFactory factory = SchemaFactory.newInstance(XMLConstants.W3C_XML_S

我试图用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));
}...
出了什么问题,validator.validate这一步它引发了一个异常,我需要在这里提供编码字符串吗

如果我使用文件,我指的是来自文件的xmlContent

validator.validate(new StreamSource(new File(filePath)));
那么它工作得很好。
我不希望xml内容来自文件,而是来自字符串对象

将字符串转换为StreamResource:

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

将字符串转换为StreamResource:

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

Balázs Nemes的回答很好。对于旧版本的Java,您可能没有可用的
StandardCharsets.UTF_8
。我们有一个Java 1.6应用程序,并使用兼容的Apache Commons库,因此使用
字符串xml

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

Balázs Nemes的回答很好。对于旧版本的Java,您可能没有可用的
StandardCharsets.UTF_8
。我们有一个Java 1.6应用程序,并使用兼容的Apache Commons库,因此使用
字符串xml

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

是的,它成功了,谢谢。它需要编码,不是字符串处理的。问题不是编码,而是StreamResource构造函数中的错误类型。如果您使用字符串参数调用StreamResource构造函数,它会尝试将此字符串解析为URL。请参阅文档:我的建议使用InputStream参数调用StreamResource构造函数,为此,我使用InputStream包装了xmlContent字符串。是的,它起作用了,谢谢。它需要编码,不是字符串处理的。问题不是编码,而是StreamResource构造函数中的错误类型。如果您使用字符串参数调用StreamResource构造函数,它会尝试将此字符串解析为URL。请参阅文档:我的建议使用InputStream参数调用StreamResource构造函数,为此,我使用InputStream包装了xmlContent字符串。