怎么调用 dtd文件

yfht 2013-05-30 06:41:57
在一个文件夹下面有许多.xml文件,现在要规范xml文件中的格式,所以要引入一个dtd文件。
我建立了一个dtd文件,放入同一个文件夹下面。
然后在xml文件中加入 <!DOCTYPE module SYSTEM "note.dtd">
编译的时候没有问题。
但是在启动tomcat 的时候,报了错误。


org.dom4j.DocumentException: D:\tomcat7\bin\note.dtd (系统找不到指定的文件。) Nested exception: D:\tomcat7\bin\note.dtd (系统找不到指定的文件。)
at org.dom4j.io.SAXReader.read(SAXReader.java:484)
at org.dom4j.io.SAXReader.read(SAXReader.java:343)
at com.ming800.core.p.service.impl.ModuleManagerImpl.readXmlFiles(ModuleManagerImpl.java:42)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:601)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeCustomInitMethod(AbstractAutowireCapableBeanFactory.java:1612)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1553)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1483)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:524)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:461)
at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:295)



这个路径应该怎么写啊? 为什么它到tomcat的bin下面去找这个dtd文件?
...全文
493 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
yfht 2013-06-20
  • 打赏
  • 举报
回复

<!DOCTYPE module SYSTEM "http://www.w3school.com.cn/dtd/note.dtd">
自己找到了。 原来需要在前面加上 “http://www.w3school.com.cn/dtd”
yktd26 2013-06-03
  • 打赏
  • 举报
回复
引用 6 楼 CrazyingDays 的回复:
[quote=引用 5 楼 yktd26 的回复:] 比如你可以将note.dtd放到你tomcat应用的根目录,比如你有个app的根目录是其中的WebContent,你将你的dtd放在这里面,然后将路径改成http://localhost:8080/app/note.dtd 说白了,就是要将文件存放在程序能访问的地方
这样的确可以解决, 我早就试过了, 但是最好能够在放在项目里面。[/quote] 你的项目放哪了? 你的WebContent不是你项目里面?
yfht 2013-06-03
  • 打赏
  • 举报
回复
引用 5 楼 yktd26 的回复:
比如你可以将note.dtd放到你tomcat应用的根目录,比如你有个app的根目录是其中的WebContent,你将你的dtd放在这里面,然后将路径改成http://localhost:8080/app/note.dtd 说白了,就是要将文件存放在程序能访问的地方
这样的确可以解决, 我早就试过了, 但是最好能够在放在项目里面。
yktd26 2013-06-03
  • 打赏
  • 举报
回复
比如你可以将note.dtd放到你tomcat应用的根目录,比如你有个app的根目录是其中的WebContent,你将你的dtd放在这里面,然后将路径改成http://localhost:8080/app/note.dtd 说白了,就是要将文件存放在程序能访问的地方
yfht 2013-05-31
  • 打赏
  • 举报
回复
引用 2 楼 yktd26 的回复:
因为这是tomcat的工作路径 而你dtd的路径没给,他就当相对路径去找,自然在bin里面找
那路径应该怎么写, 根据tomcat的日志,我也猜到了是这个原因,关键是路径不知道怎么写。
yfht 2013-05-31
  • 打赏
  • 举报
回复
引用 1 楼 wuqinfei_cs 的回复:
system : 是本地文件系统的意思 你启动的时候 是点击的 startup.bat , 而 该bat 文件又是在 bin 目录里, 所以当前目录 也就是 bin 目录. 你可以用 public来指定引入的约束文件的位置, 把 dtd 放在 web 目录的跟目录 URI 设置为 http://localhost:8080/myWebApp/note.dtd
那路径应该怎么写?
yktd26 2013-05-30
  • 打赏
  • 举报
回复
因为这是tomcat的工作路径 而你dtd的路径没给,他就当相对路径去找,自然在bin里面找
forwardNow 2013-05-30
  • 打赏
  • 举报
回复
system : 是本地文件系统的意思 你启动的时候 是点击的 startup.bat , 而 该bat 文件又是在 bin 目录里, 所以当前目录 也就是 bin 目录. 你可以用 public来指定引入的约束文件的位置, 把 dtd 放在 web 目录的跟目录 URI 设置为 http://localhost:8080/myWebApp/note.dtd

81,115

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧