0 0

xml解析忽略dtd文件3

import Java.io.ByteArrayInputStream;
import Java.io.IOException;

import org.xml.sax.EntityResolver;
import org.xml.sax.InputSource;
import org.xml.sax.SAXException;

public class IgnoreDTDEntityResolver implements EntityResolver {

@Override
public InputSource resolveEntity(String publicId, String systemId)
   throws SAXException, IOException {
        return new InputSource(new ByteArrayInputStream("<?xml version='1.0' encoding='UTF-8'?>".getBytes()));
}

}









SAXReader reader = new SAXReader();
reader.setEntityResolver(new IgnoreDTDEntityResolver()); // ignore dtd

问题补充:就是要达到这个效果。不读dtd文件

问题补充:用sax,dom4j当解析xml文件时,如果xml文件中引用了dtd文件,解析的时候读不到这个dtd文件,无论解析是否设置验证,都会抛异常。
2010年5月12日 21:52

3个答案 按时间排序 按投票排序

0 0

什么异常,贴出来看看。

2010年5月18日 01:37
0 0

@Override
public InputSource resolveEntity(String publicId, String systemId)
   throws SAXException, IOException {
        return new InputSource(new ByteArrayInputStream("<?xml version='1.0' encoding='UTF-8'?>".getBytes()));
}

} 

这个重写的方法没有读dtd文件。

2010年5月17日 09:49
0 0

resolveEntity

重写这个方法,没有做任何的DTD校正,更没有读取DTD文件,而是直接返回xml文件的byte字节。
引用
reader.setEntityResolver(new IgnoreDTDEntityResolver()); // ignore dtd

设置读xml文件时的用来DTD验证的对象。

2010年5月13日 01:38

相关推荐

    使用XmlDocumentXmlDataDocument类加载XML文件时如何忽略DTD验证

    这将阻止XML解析器尝试解析任何外部资源,包括DTD。示例如下: ```csharp XmlDocument doc = new XmlDocument(); doc.XmlResolver = null; doc.Load(url); ``` 通过这种方式,`Load`方法将不会尝试加载XML文档中...

    解析XML文件(字符串)的两种方法

    #### dom4j解析XML时忽略DTD文件验证 在使用`SAXReader`或`DocumentHelper`解析XML时,默认情况下会验证DTD(Document Type Definition),这可能会导致解析速度变慢或者因为DTD文件不存在而抛出异常。为了提高效率...

    Xml解析.docx

    此外,DOM解析器支持DTD(Document Type Definition)和XML Schema进行验证,可以通过调用`setValidating()`和`setIgnoringElementContentWhitespace()`方法来开启或关闭验证和忽略元素内容中的空白。 2. SAX解析:...

    xml解析Demo以及相关jar包

    这个“xml解析Demo以及相关jar包”压缩包文件提供了关于XML解析的实践示例,帮助我们理解XML解析的不同方法。下面将详细介绍XML解析的相关知识点。 1. **XML基本概念** - XML是一种自定义的、可扩展的标记语言,其...

    sax解析xml文件

    SAX(Simple API for XML)是XML解析的一种方式,它以事件驱动的方式处理XML文档,相较于DOM(Document Object Model)解析器,SAX具有内存占用低、速度快的优点,特别适合处理大型XML文件。 SAX解析XML文件的核心...

    expat-win32bin-2.0.1

    expat是一个由C语言编写的XML解析库。expat是一个基于SAX模型的、非验证(默认,v1.2开始提供验证接口,需要用户手动处理)的轻量级XML解释器。...非验证性的则忽略DTD文件,只要基本格式正确,就可以进行解析

    mybatis-dtd.rar

    确保`.xml`不在其中,以防止IDE将其识别为纯文本文件而忽略XML的特性。 - **Eclipse**:在`Window` -&gt; `Preferences` -&gt; `XML` -&gt; `XML Catalog`中,点击`Add...`按钮,输入DTD的URL和公共ID,使IDE能够识别并提供...

    tinyxml+tinyxpath组合编程套件,很好的编程工具,都是源码

    另一种是忽略DTD文件,只要基本格式正确,就可以进行解析。 就我所知,验证的解析器通常都是比较重量级的。TinyXml不支持验证,但是体积很小,用在解析格式较为简单的XML文件,比如配置文件时,特别的合适。

    Java_XML解析之Digester的使用

    Java XML解析中的Digester是一个强大的工具,用于将XML文档转换为Java对象。它最初是为了处理Struts框架的配置文件而设计的,随着时间的发展,它成为一个轻量级且高效的框架,专注于单向转换,即从XML到Java对象。...

    Sax解析xml_动力节点Java学院整理

    SAX,全称为Simple API for XML,是一种基于事件驱动的XML解析器,相较于DOM解析,它具有更快的速度和更低的内存占用。DOM解析会将整个XML文档加载到内存中形成一个节点树,适合处理小规模或内存有限的情况。而SAX则...

    用zeus实现xml与java之间的转换

    5. **生成Java类**:使用`DTDSourceGenerator`工具,指定DTD文件的位置、输出目录、Java包名以及一些配置参数,如是否合并简单元素和忽略ID属性。这一步会根据DTD文件自动生成对应的Java类。 6. **生成的Java类结构...

    xml练习题及答案

    这种方式告诉XML解析器如何处理文档,并指示它使用指定的XSL文件来呈现XML数据。 ### 忽略文档部分的正确语法 在XML中,如果希望解析器忽略文档的某一部分,可以使用`&lt;![CDATA[Text to be ignored]]&gt;`语法。CDATA...

    C# XML 类库

    `XmlReader`是高效的只进XML解析器,用于顺序读取XML文档而不创建整个文档对象模型(DOM)。它适用于大文件和性能敏感的场景。`XmlWriter`则用于写入XML,提供了一种流式的方法来构建XML文档。 6. **XPath和...

    xml读取,不需要任何jar包

    这个工厂可以用来创建XML解析器,例如`DocumentBuilder`。 ```java DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); ``` 2. **配置解析器工厂**: 可以通过调用`factory.setFeature...

    XML1.0标准(第二版).pdf

    XML解析器可以配置为忽略或保留空白字符。 ##### 2.11 行尾处理 行尾处理涉及到不同操作系统中的换行符差异(如Windows使用`\r\n`,Unix使用`\n`)。XML规范要求统一使用`\n`作为换行符。 ##### 2.12 语言标识 XML...

    xml知识总结

    **XML解析方式**通常有三种: 1. **DOM解析**:将整个XML文档加载到内存,形成一个树形结构,便于遍历和操作。 2. **SAX解析**:事件驱动,逐行读取XML文档,对每个元素、属性等触发相应事件,节省内存。 3. **StAX...

    xml基础知识测试题

    如何在XML中声明一段文本让解析器忽略? - **正确答案:** D. `&lt;![CDATA[Text to be ignored]]&gt;` - **解释:** 使用 `&lt;![CDATA[...]]&gt;` 可以在XML文档中声明一段文本,这段文本中的特殊字符会被解析器直接解析,而...

    OpenXML文档,sqlserver处理XML,可用于存储过程数组传参

    - `XML_PARSE` 和 `XML_IGNORE_DTD` 控制 XML 解析的详细程度,前者会解析 DTD,后者则忽略。 三、SchemaDeclaration 和 TableName - `SchemaDeclaration` 用于定义列名、数据类型和可选的 XPath 模式,从而指定行...

    php解析xml 的四种简单方法(附实例)

    例如,它是一个无验证的解析器,忽略与文档相关联的DTD(文档类型定义)。如果XML文档格式不正确,解析过程可能以错误消息终止。此外,Expat解析器只支持US-ASCII、ISO-8859-1和UTF-8编码格式的XML数据。如果XML数据...

Global site tag (gtag.js) - Google Analytics