Java 警告:验证已打开,但org.xml.sax.ErrorHandler
知道为什么会发生这种错误以及如何修复它吗?我在尝试分析/加载配置文件时遇到此错误: 错误 主代码Java 警告:验证已打开,但org.xml.sax.ErrorHandler,java,xml,Java,Xml,知道为什么会发生这种错误以及如何修复它吗?我在尝试分析/加载配置文件时遇到此错误: 错误 主代码 public static void main(String[] args) throws ConfigurationException { config = new XMLPropertiesConfiguration(new File("META-INF/vamola.xml"));
public static void main(String[] args) throws ConfigurationException {
config = new XMLPropertiesConfiguration(new File("META-INF/vamola.xml"));
System.out.println(config.getString("persitence-unit.provider"));
System.out.println(config.getList("persistence-unit.properties.name"));
}
XML文件
<?xml version="1.0"?>
<persistence version="1.0"
xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd">
<persistence-unit name="dbBank" transaction-type="RESOURCE_LOCAL">
<provider>oracle.toplink.essentials.PersistenceProvider</provider>
<class>br.ufg.inf.server.Account</class>
<class>br.ufg.inf.server.UserBank</class>
<properties>
<property name="toplink.jdbc.user" value="derby" />
<property name="toplink.jdbc.password" value="senha" />
<property name="toplink.jdbc.url" value="jdbc:derby://192.168.80.125:1527/db/master/dbBank;create=true"/>
<property name="toplink.jdbc.driver" value="org.apache.derby.jdbc.ClientDriver" />
<property name="toplink.ddl-generation" value="create-tables" />
<property name="toplink.logging.level" value="OFF" />
<property name="toplink.target-database" value="Derby" />
</properties>
</persistence-unit>
</persistence>
oracle.toplink.essentials.PersistenceProvider
br.ufg.inf.server.Account
br.ufg.inf.server.UserBank
如果在启用验证的情况下解析XML文档,则需要在XML文档开头的DOCTYPE中指定DTD或XML模式。解析器基本上是在抱怨它不知道如何验证文档,因为没有指定语法来验证标记
您已经有了XML架构,因此可能需要:
<!DOCTYPE schema PUBLIC "http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd">
如果要关闭验证,则需要以下内容:
spf.setValidating(false)代码>(其中spf是SaxParserFactory)XML文档定义了默认名称空间http://java.sun.com/xml/ns/persistence
并包含一个url,可以在其中找到架构(xsi:schemaLocation
属性,第一个值是名称空间,第二个值是url或路径)
请仔细检查此url在解析时是否可访问。另一种方法是下载模式,将其放在文件系统上,并修改xsi:schemaLocation
值。异常表示未设置ErrorHandler
。这意味着解析器使用其内置的错误处理程序,它只是将消息写入控制台。如果确实要验证,则需要创建一个实现并将其附加到DocumentBuilder
有关更多信息,请阅读以下内容:(错误处理程序大约占整个过程的1/3)
或者,正如其他回答所建议的,您可以只关闭验证。那么我如何设置doctype或关闭验证?因此我需要将dtd存储在本地?我编辑了我的回答,以显示如何关闭验证。如果您想使用DTD,您可以使用URL而不是文件引用。实际上,当我再次查看您的XML时,您已经引用了一个scaema,因此您可能可以将doctype设置为使用它(请参见上文)。DTD有点令人讨厌。此外,jpa使用XSD
<!DOCTYPE schema PUBLIC "http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd">