dom4j常见错误
1. 问题:使用Dom4j解析大文件时内存溢出的问题 当我用dom4j去解析一个几十M的xml时,就出现out of memory.当然了,这也是根据你的机器性能而定的,我们都知道dom4j在各种DOM解析器中应该算是性能最好的,连大名鼎鼎的Hibernate都是用dom4j来解析XML配置文件的 分析: 问题出在于使用dom4j的SAXReader是会把整个XML文件一次性读入,如果XML文件过大就会抛出out of memory,但即使是使用SAXParser批量读入解析,但它也是一次解析完,假设XML文件有几万条数据,那么解析后就必须在内存放入这几万条对象 解决: 常用的Dom4j文件解析方式: InputStream is = new FileInputStream(filePath); SAXReader reader = new SAXReader(); //将整个XML构建为一个Document Document doc = reader.read(is); Element root = doc.getRootElement(); // 获得根节点 for (Object obj : root.elements()) { // 遍历每个节点 Element e = (Element)obj; // 对当前节点进行操作 解决方法:使用ElementHandler解析文件 参考网址:http://blog.sina.com.cn/s/blog_6cee57af0100q54e.html 2. 问题:使用java.io.Reader读取XML文件进行解析时出现异常 org.dom4j.DocumentException: Error on line 1 of document : Content is not allowed in prolog. Nested exception: org.xml.sax.SAXParseException: Content is not allowed in prolog 分析:UTF-8编码文件存在BOM头,Reader类无法正确识别 解决: (1).使用16进制编辑器手动删除BOM头 (2).InputStream读取流中前面的字符,看是否有BOM,如果有BOM,干掉BOM头 (3).InputStream读取完文件,干掉BOM头 参考网址:http://blog.sina.com.cn/s/blog_6cee57af0100q54e.html 3. 问题:解析XML文件时出现非法字符的Exception(即使该字符位于CDATA段内): org.xml.sax.SAXParseException: An invalid XML character (Unicode: 0xb) was found in the CDATA section. 分析:根据W3C标准,有一些字符不能出现在XML文件中:0x00 - 0x08, 0x0b - 0x0c, 0x0e - 0x1f解析XML时遇到这些字符就会出错 解决:对有可能出问题的XML文件,进行字符过滤后再进行解析(如:[\\x00-\\x08\\x0b-\\x0c\\x0e-\\x1f]) 参考网址:http://blog.sina.com.cn/s/blog_6cee57af0100q54e.html
JDOM常见错误
1. 错误:org.jdom.input.JDOMParseException: Error on line 0: The encoding "GB18030" is not supported. 分析:应该是你的xml文件中第一行定义了encoding="GB18030",而这个dom解析器,不支持这种编码。 解决:更改编码 2. 错误:java.net.MalformedURLException 报java.net.MalformedURLException,发现运行到builder.build(xml)时报错 分析:传入个字符串格式不规范,我直接传入一个流进去,改过后的代码: SAXBuilder builder=new SAXBuilder(false); StringReader reader = new StringReader(xml); //用reader读取字符串,xml为已字符串 Document doc=builder.build(new InputSource(reader)); Element result=doc.getRootElement(); Element code=result.getChild("code"); 参考网址:http://blog.sina.com.cn/s/blog_6f7d179e01013otz.html
sax常见问题
1. 问题:org.xml.sax.SAXParseException:Parser has reached the entity expansion limit "64,000" set by the Application.(org.xml.sax.SAXParseException: 分析器已达到由应用程序设置的实体扩展限制“64,000”。) 分析:在单个xml文件中实体引用超过了默认值64000个。你用dom和sax解析XML都可能会遇到这个问题,这印证了我的猜测,java的dom是用sax来实现的。 解决:运行Java的时候,加上参数-DentityExpansionLimit=xxxxx,你也可以在代码中解析XML前,用代码设置这个参数System.setProperty("entityExpansionLimit", "xxxxx");。xxxxx代表设定的单文件实体引用数最大值。 参考网址:http://blog.csdn.net/a_heng/article/details/4566841
相关推荐
#### 常见错误17:取大优先解析原则带来的问题 C++中某些表达式的解析遵循“取大优先”原则,即解析器倾向于选择更为复杂的类型。不了解这一点可能导致意外的类型转换,进而影响程序的正确性。 以上只是对部分错误...
Excel中的常见错误值全解析【会计实务操作教程】.pptx
标题“MQL4程序的常见错误中文解析”明确指出本文将针对MQL4编程语言中的常见问题进行详细的中文解释与分析。MQL4是一种专门用于开发交易策略、自定义指标及脚本的编程语言,主要用于MetaTrader 4(MT4)平台。 ###...
成语题常见错误解析.docx
主要针对于C语言,对我们编程中遇到的一些错误进行解析
本篇文章将详细解析一些Oracle数据库中常见的错误,帮助你更好地理解和解决这些问题,从而更熟练地操作Oracle。 1. ORA-00922: 无法识别的选项 这个错误通常发生在创建或修改表时,可能是因为指定了Oracle不支持的...
在本文中,我们将深入探讨有关ZTE设备,特别是ZTE校园客服端的两个常见错误及其解决方案。这些错误可能困扰着用户,导致网络连接问题。让我们逐一解析这些错误并提供相应的解决办法。 错误一:错误044 - 网络连接有...
C语言程序设计常见错误解析.pdf
### C++编程常见错误分类与解析 #### 一、引言 C++作为一种支持面向对象技术的优秀程序设计语言,以其灵活的操作性、强大的可移植性和高效的运行性能,在工程控制等多个领域得到了广泛应用。然而,正是由于C++语言...
常见mysql错误提示码详细解析,常见mysql错误提示码详细解析
让你轻松查阅Debug时令人崩溃的Assert报错原因,包括断言、所在函数、具体位置以及错误解析。
### JSP中常见的Tomcat报错错误解析 在Java Server Pages (JSP) 开发过程中,经常遇到Apache Tomcat服务器抛出的各种错误代码。这些错误不仅会影响应用的正常运行,而且有时还会导致服务不可用。因此,理解这些错误...
软件开发:解析多联机软件开发中常见错误及MISRA C的应用 软件开发中的多联机软件开发是一种复杂的开发过程,需要考虑到可靠性、可移植性和安全性等多个方面。MISRA C是一种编程规范,旨在提高嵌入式系统的安全性...
【Python Web开发常见错误解析】 在Python Web开发中,开发者可能会遇到各种问题,从数据库连接错误到代码逻辑问题,再到性能优化和安全漏洞。本文针对这些常见错误进行了深入解析,并提出了相应的解决策略。 1. *...
以下是Excel中几种常见的错误值及其原因和解决方法的详细解析: 1. **#N/A** 错误 当Excel无法找到所需的数据或函数应用无效时,会出现这个错误。可能的情况包括: - 缺少必要的数据。 - 使用了`HLOOKUP`、`...
MATLAB 是一种强大的数学计算和建模工具,广泛应用于科学研究和工程领域。...熟悉这些常见错误及其解决办法,能提高编程效率并确保程序的正确运行。通过不断实践和学习,用户将能够更熟练地使用 MATLAB 解决复杂问题。
本资料《VC++常见错误中英文对照表》为开发者提供了一个宝贵的参考工具,它包含了VC++ 6.0编译过程中可能遇到的各种错误代码及其对应的中文解释。错误代码通常是编译器在检测到源代码中的问题时生成的,它们可以帮助...