我使用的是UTF-16编码的XML文件。当我尝试使用模式验证验证此文件时,抛出以下异常:
org.xml.sax.SAXParseException: Content is not allowed in prolog.
at
com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.
createSAXParseException(Unknown Source)
我的代码如下。
SchemaFactor schemaFactory =
SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI);
/** load a WXS schema, represented by a Schema instance */
Source schemaFile = new StreamSource(new File("Sample.xsd"));
try {
Schema schema = schemaFactory.newSchema(schemaFile);
javax.xml.validation.Validator validator = schema.newValidator();
validator.validate(new StreamSource(new File("Testing.xml")));
System.out.println("Validation Successs");
} catch (SAXException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
答案 0 :(得分:0)
您的xml无效。在序言之前有一些内容。 XML prolog通常是<?xml version="1.0"?>
修复你的xml。代码没问题。
答案 1 :(得分:0)
prolog错误允许的内容是因为它期待UTF-8 ......我只能通过将我的编码更改为UTF-8然后验证来修复它。