Tag: dtd

如何在Spring XML文件中使用DOCTYPE

大多数时候我们都没有在Spring中声明DOCTYPE 。 但我想在我的XML上下文文件中声明一个DOCTYPE,以便我可以在我的xml文件中使用ENTITY 。 例如: <!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN 2.0//EN" "http://www.springframework.org/dtd/spring-beans-2.0.dtd" [ %crmHome;] > 这给出了很多错误,比如… – Attribute “xmlns” must be declared for element type “beans”. – Attribute “xmlns:xsi” must be declared for element type “beans”. etc….. 实现这个目标的方法是什么?

如何在编写XML文件时忽略DTDvalidation但保留Doctype?

我正在研究一个系统,该系统应该能够读取任何(或至少是任何格式良好的)XML文件,操作一些节点并将它们写回到同一个文件中。 我希望我的代码尽可能通用,我不想要 在我的代码中的任何位置对模式/ Doctype信息进行硬编码引用。 doctype信息位于源文档中,我想保留该doctype信息,而不是在我的代码中再次提供。 如果文档没有DocType,我不会添加一个。 除了我的几个节点之外,我根本不关心这些文件的forms或内容。 自定义EntityResolvers或StreamFilters以省略或以其他方式操纵源信息(已经遗憾的是,命名空间信息似乎无法从声明它的文档文件中访问,但我可以使用uglier XPath进行管理) DTDvalidation。 我没有引用的DTD,我不想包含它们,并且在不知道它们的情况下完全可以进行节点操作。 目的是使源文件完全不变,除了通过XPath检索的已更改的节点。 我想逃避标准的javax.xml。 我到目前为止的进展: DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); factory.setAttribute(“http://xml.org/sax/features/namespaces”, true); factory.setAttribute(“http://xml.org/sax/features/validation”, false); factory.setAttribute(“http://apache.org/xml/features/nonvalidating/load-dtd-grammar”, false); factory.setAttribute(“http://apache.org/xml/features/nonvalidating/load-external-dtd”, false); factory.setNamespaceAware(true); factory.setIgnoringElementContentWhitespace(false); factory.setIgnoringComments(false); factory.setValidating(false); DocumentBuilder builder = factory.newDocumentBuilder(); Document document = builder.parse(new InputSource(inStream)); 这会成功将XML源加载到org.w3c.dom.Document中,忽略DTDvalidation。 我可以做我的替换然后我用 Source source = new DOMSource(document); Result result = new StreamResult(getOutputStream(getPath())); // Write the DOM […]

如何将本地DTD文件的validation应用于java中的xml文件?

我需要解析一堆传入的XML文档,但它不包含DTD声明。 目前我正在使用SAX Parser解析xml文档但没有DTDvalidation。 现在我想应用DTDvalidation。 DTD由我自己创建。 如何使用自己创建的DTD(SAX解析器)validationXML文件? 我找到了一些使用Transformer的教程,但都是针对DOM Parser的。 如何使用SAX Parser解析XML文件并应用DTDvalidation。 任何帮助……

在相对路径上解析具有DTD架构的XML文件

我有以下java代码: DocumentBuilder db=DocumentBuilderFactory.newInstance().newDocumentBuilder(); Document doc=db.parse(new File(“/opt/myfile”)); /opt/myfile包含以下内容: … 我收到以下错误: java.io.FileNotFoundException:/../schema / xml / schema.dtd(没有这样的文件或目录) 这是一个大型java框架,它使用其他地方生成的XML文件。 我认为相对路径是问题所在。 我不认为在JVM启动之前更改cwd是可以接受的(路径来自JVM本身读取的配置文件)并且我没有找到在JVM运行时更改cwd的方法。 如何使用适当的DTD解析此XML文件?

参考Java中的本地DTD

我有一些XML,我正在使用Java中的SAX解析器进行解析。 它从这个序言开始: 如何更改此设置以使用本地DTD? 我想我可以这样做: 不是那样的,但是那样的东西 。 但是,我需要路径独立于用户的系统。 如何使用具有相对于类路径的路径的本地DTD?

Struts2和Tiles:当apache.org关闭时,我的webapp无法启动

我正在构建一个使用磁贴的Struts2 Web应用程序但是我发现了一个非常令人沮丧的问题,即如果apache.org关闭(这似乎经常发生)Web应用程序无法启动。 这是因为在其标准设置中,StrutsTilesListener尝试加载tiles defenitions文件,该文件包含一个带有public-id的DOCTYPE,该公共id指向位于tiles.apache.org上的DTD。 当应用程序启动时,定义文件使用Apache Xerces通过Apache Commons Digester加载,它尝试从tiles.apache.org加载DTD但是如果apache.org关闭则会失败,并且随之而来的是整个Web应用程序无法启动。 我可以通过下载文件并将其置于本地并在struts定义文件中指定新的本地位置来绕过远程位置的下载,但是这个解决方案不是非常便携,因为DTD在本地保存的位置可能会有所不同开发人员机器和不同的一旦上传到实时环境,所以我将不得不继续编辑位置,以便运行webapp运行的机器,这简直是烦人的。 项目中没有其他xml文件存在此问题,包括struts.xml文件,该文件在apache.org上也有一个DTD位置,因此很明显存在一个设置问题,其中Tiles严格要求DTD但其他组件不是。 这有什么解决方案吗? 我已经没有耐心了,我不能把这个网络应用程序告知,如果apache.org在重新启动时关闭,webapp将不会恢复。 Struts tile defenition文件 当apache.org关闭时,堆栈跟踪 SEVERE: Exception sending context initialized event to listener instance of class org.apache.struts2.tiles.StrutsTilesListener java.lang.IllegalStateException: Unable to instantiate container. at org.apache.tiles.web.startup.TilesListener.contextInitialized(TilesListener.java:60) at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:3972) at org.apache.catalina.core.StandardContext.start(StandardContext.java:4467) at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045) at org.apache.catalina.core.StandardHost.start(StandardHost.java:785) at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045) at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:443) at org.apache.catalina.core.StandardService.start(StandardService.java:519) at org.apache.catalina.core.StandardServer.start(StandardServer.java:710) at org.apache.catalina.startup.Catalina.start(Catalina.java:581) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native […]

Scala / Java不尊重w3“超额dtd流量”规范吗?

我是Scala的新手,所以我可能不在此基础上,我想知道问题是否是我的代码。 鉴于Scala文件httpparse,简化为: object Http { import java.io.InputStream; import java.net.URL; def request(urlString:String): (Boolean, InputStream) = try { val url = new URL(urlString) val body = url.openStream (true, body) } catch { case ex:Exception => (false, null) } } object HTTPParse extends Application { import scala.xml._; import java.net._; def fetchAndParseURL(URL:String) = { val (true, body) = Http […]

如何使用javavalidationxml与dtd?

我有以下xml文件: E-001 Vinod Vinod1@yahoo.com 我有以下dtd文件: 我想使用java在上面的dtd中validation这个xml文件。 请帮忙谢谢.. 🙂

使用DTD文件中的JAXB生成Java类 – 如何修改DTD?

我想使用JAXB从dtd文件生成Java类。 dtd看起来像这样: 使用JAXB生成类时,我得到以下内容: 的ObjectFactory 内容 人 人 组 组 在Content类中,检索所有人和组的方法是 public List getPersonOrGroup() { if (personOrGroup == null) { personOrGroup = new ArrayList(); } return this.personOrGroup; } 我可以在dtd文件中更改任何Content ,因此Java类的生成将使persons和groups在Content java类中分离,因此要检索所有人员和组将调用Content.getPersons()和Content.getGroups()分别?

在XOM中解析XHTML文档时出现DTD下载错误

我试图解析一个HTML文档与声明的doctype使用过渡dtd,如下所示: 当我在文档上执行Builder.build时,我得到以下exception: java.io.IOException: Server returned HTTP response code: 503 for URL: http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1305) at org.apache.xerces.impl.XMLEntityManager.setupCurrentEntity(Unknown Source) at org.apache.xerces.impl.XMLEntityManager.startEntity(Unknown Source) at org.apache.xerces.impl.XMLEntityManager.startDTDEntity(Unknown Source) at org.apache.xerces.impl.XMLDTDScannerImpl.setInputSource(Unknown Source) at org.apache.xerces.impl.XMLDocumentScannerImpl$DTDDispatcher.dispatch(Unknown Source) at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanDocument(Unknown Source) at org.apache.xerces.parsers.DTDConfiguration.parse(Unknown Source) at org.apache.xerces.parsers.DTDConfiguration.parse(Unknown Source) at org.apache.xerces.parsers.XMLParser.parse(Unknown Source) at org.apache.xerces.parsers.AbstractSAXParser.parse(Unknown Source) at nu.xom.Builder.build(Builder.java:1127) at nu.xom.Builder.build(Builder.java:1019) 如果我删除了doc类型声明,它解析就好了。 我可以从我的浏览器成功下载dtd,它告诉我该url是有效的。 我不想删除doc类型声明。 有没有办法告诉建设者不要下载dtd或提供备用dtd?