我正在尝试使用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内容,而是来自字符串对象
答案 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))));