【发布时间】:2018-04-25 23:04:03
【问题描述】:
在 Java-Hibernate(4.2 版)中,我使用了一个功能来方便地将其他 XML 文档包含在另一个 XML 文档中:
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd"[
<!ENTITY authorizables SYSTEM "classpath://authorizables.xml">
]>
...
<any name="Authorizable" meta-type="string" id-type="long">
&authorizables; <!-- application specifc meta-value definitions for Authorizables with long-ID -->
...
</any>
authorizables.xml(位于不同的包和 jar 文件中)包含具体的类
<meta-value value="Spiel" class="otherpackage.class1"/>
<meta-value value="Team" class="otherpackage.class1"/>
在 NHibernate 5.1(用于 C#)中,我尝试了相同的映射方法,但出现异常
NHibernate.MappingException
+ InnerException {"DTD is prohibited in this XML document ... System.Exception {System.Xml.XmlException}
从这个(相当老的)帖子Using Doctype in Nhibernate我明白了 DOCTYPE 功能已从 NHibernate 中删除(几年前),尽管它仍然记录在 NHibernate 参考文档中 版本:5.1,第 8.1.6 章。
我也找不到文档化的休眠配置属性来允许 DOCTYPE 处理。
DOCTYPE 仍然不受支持吗? (然后我将不得不尝试不同的映射方法)。
【问题讨论】:
-
DOCTYPE 不能是网络库中 XML 文件的第一行。通常,xml ident 行将是第一行。
-
是的,我知道,我确实只显示了我的映射文件的相关部分
标签: c# xml nhibernate-mapping