文档生成器将html标记添加到doc

时间:2019-02-24 06:10:41

标签: hibernate xml-parsing

这实际上与Hibernate尝试在本地加载persistence.xml时有关。

Here is the stacktrace and error
ERROR javax.persistence.PersistenceException: Invalid persistence.xml.
Error parsing XML (line-1 : column -1): cvc-elt.1.a: Cannot find the declaration of element 'HTML'.

    at org.hibernate.ejb.packaging.PersistenceXmlLoader.loadURL(PersistenceXmlLoader.java:145)
    at org.hibernate.ejb.packaging.PersistenceXmlLoader.deploy(PersistenceXmlLoader.java:169)
    at org.hibernate.ejb.Ejb3Configuration.configure(Ejb3Configuration.java:317)
    at org.hibernate.ejb.HibernatePersistence.createEntityManagerFactory(HibernatePersistence.java:56)
    at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:63)

  

实际上,持久性xml很简单(我从较大的XML中最小化了它,因为它没有区别)

<?xml version="1.0" encoding="UTF-8"?>
<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>
  

问题是documentbuilder中的这一行

    DocumentBuilder docBuilder = docBuilderFactory.newDocumentBuilder();
            docBuilder.setEntityResolver(resolver);
    doc = docBuilder.parse(source);

>The doc after parsed has HTML tags in it which it should not because its just a xml. I traveresed the nodes in the doc and got below elements

Found element HTML
Found element HEAD
Found element BODY
Found element PERSISTENCE

这就是XSD架构验证失败的原因,因为它不希望使用html元素。

任何人都知道为什么以及如何克服这个问题。

1 个答案:

答案 0 :(得分:0)

发现了问题。我在类路径中有nekohtml-1.9.22.jar。它是一个解析器,也是一个标签平衡器。它被视为默认解析器,并且由于它在xml中找不到HTML标记,因此添加了它。奇怪的是,它不应该是XML的默认值。无论如何,将其从类路径中删除即可解决此问题。

相关问题