解决办法可以参见这位老兄的博客:
http://tailsherry.iteye.com/blog/98111
对第二种方法补充两个小分支:
1.直接写一内部类,代码如下
class NoOpEntityResolver implements EntityResolver {
public InputSource resolveEntity(String publicId, String systemId) {
return new InputSource(new StringBufferInputStream(""));
}
}
使用时,加上代码:
xmlReader.setEntityResolver(new NoOpEntityResolver());
这样也能通过。
2.可参考hibernate的处理方式来实现EntityResolver。见org.hibernate.util.DTDEntityResolver。这里贴上它的resolveEntity()方法。
public InputSource resolveEntity(String publicId, String systemId) {
if ( systemId != null ) {
log.debug( "trying to resolve system-id [" + systemId + "]" );
if ( systemId.startsWith( HIBERNATE_NAMESPACE ) ) {
log.debug( "recognized hibernate namespace; attempting to resolve on classpath under org/hibernate/" );
String path = "org/hibernate/" + systemId.substring( HIBERNATE_NAMESPACE.length() );
InputStream dtdStream = resolveInHibernateNamespace( path );
if ( dtdStream == null ) {
log.debug( "unable to locate [" + systemId + "] on classpath" );
if ( systemId.substring( HIBERNATE_NAMESPACE.length() ).indexOf( "2.0" ) > -1 ) {
log.error( "Don't use old DTDs, read the Hibernate 3.x Migration Guide!" );
}
}
else {
log.debug( "located [" + systemId + "] in classpath" );
InputSource source = new InputSource( dtdStream );
source.setPublicId( publicId );
source.setSystemId( systemId );
return source;
}
}
else if ( systemId.startsWith( USER_NAMESPACE ) ) {
log.debug( "recognized local namespace; attempting to resolve on classpath" );
String path = systemId.substring( USER_NAMESPACE.length() );
InputStream stream = resolveInLocalNamespace( path );
if ( stream == null ) {
log.debug( "unable to locate [" + systemId + "] on classpath" );
}
else {
log.debug( "located [" + systemId + "] in classpath" );
InputSource source = new InputSource( stream );
source.setPublicId( publicId );
source.setSystemId( systemId );
return source;
}
}
}
// use default behavior
return null;
}
分享到:
相关推荐
另外,离线解析还可能包含一些高级功能,比如数据筛选、格式化、导出为其他格式(如CSV、XML),或者与数据库集成进行数据导入导出。 总结来说,“json离线解析”这个主题涵盖了以下几个知识点: 1. JSON的基本概念...
有些情况下,在开发web项目中会遇到weblogic无法解析xml的错误,是因为weblogic在解析xml时是调用自己的方法去解析,会产生一些莫名其妙的错误,我们只要在web-inf下添加weblogic.xml让其让出解析权即可.
java在线解析xmljava在线解析xmljava在线解析xmljava在线解析xmljava在线解析xmljava在线解析xmljava在线解析xmljava在线解析xmljava在线解析xmljava在线解析xmljava在线解析xmljava在线解析xmljava在线解析xmljava...
6. **错误处理**:解析过程中可能出现错误,比如XML格式不正确。需要使用`Error`属性检查错误状态,并通过`ErrorMessage`获取错误信息。 7. **XML DOM操作**:如果使用XMLDOMDocument,还可以进行更复杂的DOM操作,...
总的来说,STM32F107结合minixml库提供了一个高效且节省资源的解决方案,使得嵌入式系统能够在有限的资源下处理XML数据。通过学习和实践这个示例,开发者可以掌握在STM32平台上进行XML解析的基本技巧,为未来的项目...
SAX解析XML文件的实例。一个项目同时用dom解析和sax解析xml文件貌似会报错,项目框架建一直是用sax和dom4j解析xml文件的。当我用dom解析xml文件。导入包后就报错识别不了xml文件的编码格式。于是做了一个sax解析xml...
4. **SAX解析**:与DOM不同,SAX解析器不将整个XML文档加载到内存,而是通过事件回调函数处理每个元素的开始和结束、处理属性等。在易语言中,我们需要定义一系列的事件处理函数,如`开始文档`、`结束文档`、`开始...
总结来说,"STM32解析XML完整工程.zip"提供了一个在STM32微控制器上解析XML文件的完整解决方案,包括必要的软件资源和示例代码。通过学习和理解这些文档及代码,开发者可以掌握在嵌入式环境中处理XML数据的技术,为...
JAVA 解析XML和生成XML文档源码。比较全 1.DOM生成和解析XML文档 2.SAX生成和解析XML文档 3.DOM4J生成和解析XML文档 4.JDOM生成和解析XML
2. **XML解析**:XML文档由元素、属性、文本等构成,解析XML时,我们需要读取这些元素并将其转换为内存中的数据结构。Python中可以使用`xml.etree.ElementTree`库进行解析,Java中可使用DOM或SAX解析器。 3. **XML...
标题中的“PB解析XML字符串 把XML 变为数据窗口”指的是使用PowerBuilder(PB)这一编程工具,处理XML格式的数据,并将其转换成数据窗口对象的过程。数据窗口是PowerBuilder中的一个核心组件,用于显示、编辑和管理...
JS 解析 XML 文件 作为一名 IT 行业大师,我将从给定的文件中生成相关知识点,涵盖 JS 解析 XML 文件的各种方面。 JS 解析 XML 文件的必要性 在当前的 web 开发中,XML 文件广泛应用于数据交换和存储。因此,如何...
Java作为一种广泛使用的后端编程语言,提供了多种方式来解析XML文档,使得处理多级嵌套的数据变得可能。本文将详细讲解如何在Java中解析XML,特别是针对多级结构的情况。 首先,Java提供了两种主要的API来处理XML:...
读取和设置xml配置文件是最常用的操作,试用了几个C++的XML解析器,个人感觉TinyXML是使用起来最舒服的,因为它的API接口和Java的十分类似,面向对象性很好。 TinyXML是一个开源的解析XML的解析库,能够用于C++,...
JavaScript中的XML解析器是用于处理XML数据的关键工具,它允许开发者在浏览器环境中解析XML文档或者XML字符串,从而在Web应用中有效地使用这些数据。XML(eXtensible Markup Language)是一种结构化数据语言,常用于...
SAX(Simple API for XML)是一种事件驱动的解析方法,它不创建整个文档树,而是按需逐行读取XML文档,遇到元素开始、结束、属性等事件时,会触发相应的回调函数。开发者需要实现这些回调函数来处理事件。 优点: -...
除了实体引用,XML还提供了一种特殊的结构——CDATA区(Character Data),用于包含一大段不应被解析的文本。在CDATA区内,解析器会忽略所有特殊字符。例如: ```xml <![CDATA[ 这里可以放不会被解析的文本,包括...
而SAX解析器则是事件驱动的,逐个处理XML元素,适合处理大型XML文件,因为它不需要一次性加载整个文档。 在"Parse XML"这个子VIs中,你可能看到包含以下功能的模块: 1. XML文件选择器:用户可以通过这个界面组件...
这种方法的优势在于能够方便地访问任意位置的节点,但缺点是占用大量内存,不适用于大型XML文件。 2. SAX解析: SAX解析器采用事件驱动的方式,逐行读取XML文档,触发相应的事件(如开始元素、结束元素等)。`...
- 当解析或加载XML文件时,应处理可能出现的异常,如文件不存在或格式错误。使用`try-catch` 块捕获异常: ```csharp try { xmlDoc.Load("path_to_your_xml_file.xml"); } catch (FileNotFoundException ex) ...