Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/13.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 警告:验证已打开,但org.xml.sax.ErrorHandler_Java_Xml - Fatal编程技术网

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">