今天弄SAXReader读取XML文件时老是报错,说某某路径下的200602.dtd文件找不到。我就觉得奇怪:指定目录的确没这个文件,我的整个电脑上都没有这个文件,必然报错很正常,问题是我没让它读取什么dtd文件啊。后来查来查去,返现我要读写的那个xml文件里面有这个一句:!DOCTYPE dmh SYSTEM "200602.dtd"。原来是xml文件的dtd文件校验。
于是网上搜刮了一下别人的东西,整合成了自己的,在此做个记录。
1、设置SAXReader的feature属性,禁止校验dtd文件:
import com.sun.org.apache.xerces.internal.impl.Constants; ...... public static SAXReader getSAXReader(){ SAXReader saxReader = new SAXReader(); //在读取文件时,去掉dtd的验证,可以缩短运行时间 try { //saxReader.setFeature("http://apache.org/xml/features/nonvalidating/load-external-dtd", false); //看着上面的目录,感觉是要去Apache网站上找东西啊,万一我没网咋办呢,所以还是不用的好 saxReader.setFeature(Constants.XERCES_FEATURE_PREFIX + Constants.LOAD_EXTERNAL_DTD_FEATURE, false); //设置不需要校验头文件 } catch (Exception e) { e.printStackTrace(); } return saxReader; }2、设置EntityResolver属性,忽略dtd校验:
相关推荐
如果网络不可用或该URL无法访问,则DOM4J将无法获取DTD文件,从而导致解析失败,并抛出异常:“无法找到DTD文件”。 #### 解决方案 为了解决这个问题,可以通过自定义`EntityResolver`来提供一种机制,使得DOM4J...
SAXReader允许开发者以流式处理方式读取XML文档,这种方式对内存使用非常友好,特别适合处理大型XML文件,因为它不需要一次性加载整个文档到内存中。 描述中提到的两个jar包——"dom4j-1.6.1.jar"和"jaxen-1.1-beta...
在Java编程中,解析XML文档是一项常见的任务,而SAXReader是dom4j库中的一个类,用于以SAX(Simple API for XML)方式读取XML文档。SAX是一种事件驱动的XML解析器,它以流式处理XML数据,节省内存资源,特别适合处理...
在这个“SAXreader需要的jar包.zip”压缩文件中,包含了两个重要的第三方库:dom4j-2.1.3.jar和jaxen-1.1.6.jar,它们是用来增强和补充XML解析功能的。 dom4j是一个非常灵活的Java XML API,它提供了包括读取、写入...
不过,SAXReader不直接支持Java-XML绑定,但可以配合其他库(如Castor、XStream)实现此功能。例如,通过Castor库,你可以定义一个Java类来匹配XML结构,然后将解析后的Document对象转换为这些Java对象。 **...
如果XML文档不符合DTD,`SAXReader`会抛出`DocumentException`。 ```java SAXReader reader = new SAXReader(); reader.setValidation(true); // 启用DTD验证 reader.setDTDHandler(new DTDHandler() { // 可以...
2. 创建SaxReader实例:使用`org.dom4j.SaxReader`类的构造函数创建实例,通常不需要进行额外的配置。 ```java SaxReader reader = new SaxReader(); ``` 3. 加载XML文件:调用`read`方法读取XML文件,返回一个`...
SAX(Simple API for XML)是一种事件驱动的解析器,它不将整个XML文档加载到内存中,而是逐行读取,这使得SAX在处理大型XML文件时比DOM(Document Object Model)更加高效。 SAXReader是Java中一个常用的XML解析库...
4. **执行校验**:通过调用`SAXReader.read()`方法读取XML文件,同时进行校验。如果XML文件不符合XSD定义的模式,则会抛出异常。 #### 总结 本文介绍了如何使用DOM4j结合SAXParser来实现XML与XSD之间的校验。虽然...
4. 解析XML文件:调用SAXReader的read方法,传入XML文件路径,开始解析过程。在这个过程中,SAXReader会根据XML结构触发对应的事件处理器。 5. 定义事件处理器:创建一个继承自DefaultHandler的类,重写需要处理的...
在使用`SAXReader`或`DocumentHelper`解析XML时,默认情况下会验证DTD(Document Type Definition),这可能会导致解析速度变慢或者因为DTD文件不存在而抛出异常。为了提高效率和避免异常,可以通过设置解析器的相关...
它是一种事件驱动的解析器,可以高效地处理大型XML文件,因为它不将整个文件加载到内存中。使用SAXReader,你可以逐事件地处理XML文档,例如开始元素、结束元素、字符数据等。以下是一个简单的SAXReader使用示例: ...
详细解析SAXReader解析器的作用与用法中的使用的xml文件
压缩包里面有两个文件:SAX.java和SAXparse.java 用来解析大于100M的xml文件,SAX读取xml不同于DOM方式,DOM方式在解析xml前需要全部加载xml文件,当xml文件很大时,就会出现内存不足的问题,而SAX则是逐行读取xml...
接下来,通过调用`read()`方法,传入XML文件的输入源,SAXReader将开始解析并调用预先定义的事件处理器。这些处理器通常需要实现SAX的ContentHandler接口,包含如`startElement()`、`endElement()`和`characters()`...
本教程将重点介绍如何使用SAXReader在Java中读取XML文件。 SAXReader是JDOM库中的一个类,它实现了SAX解析器接口,适用于处理大型XML文档,因为它不会将整个XML文档加载到内存中,而是采用事件驱动的方式,逐个处理...
介绍在标准的ExcelReader中,如果数据量较大,读取Excel会非常缓慢,并有可能造成内存溢出。因此针对大数据量的Excel,Hutool封装了event
由于DOM4J在解析XML时只能一层一层解析,所以当XML文件层数过多时使用会很不方便, 结合XPATH就可以直接获取到某个元素 使用dom4j支持xpath的操作的几种主要形式 第一种形式 /a/b/c: 表示一层...
使用DOM4J方法读取XML文件,需要创建SAXReader对象,读取XML文件得到Document对象,然后使用Element对象的elementIterator方法获取指定标签的迭代器,遍历迭代器进行数据提取。 优点:DOM4J方法提供了高效的XML解析...