sax解析xml运行出现错误org.xml.sax.SAXParseException: Content is not allowed in prolog.
原因及其解决办法:
1.xml编码错误
该xml是UTF-8编码的,如果该文件通过UltraEdit编辑后,会在无BOM头的UTF-8文件中加入BOM,但是DOM4j不认这个BOM(dom4j1.3),解决的办法可以通过升级dom4j到1.6解决www.dom4j.org
什么是BOM?http://www.unicode.org/faq/utf_bom.html#22
Unicode规范中有一个BOM的概念。BOM——Byte Order Mark,就是字节序标记。在这里找到一段关于BOM的说明:
在UCS 编码中有一个叫做"ZERO WIDTH NO-BREAK SPACE"的字符,它的编码是FEFF。而FFFE在UCS中是不存在的字符,所以不应该出现在实际传输中。UCS规范建议我们在传输字节流前,先传输字符"ZERO WIDTH NO-BREAK SPACE"。这样如果接收者收到FEFF,就表明这个字节流是Big-Endian的;如果收到FFFE,就表明这个字节流是Little-Endian的。因此字符"ZERO WIDTH NO-BREAK SPACE"又被称作BOM。
UTF-8不需要BOM来表明字节顺序,但可以用BOM来表明编码方式。字符"ZERO WIDTH NO-BREAK SPACE"的UTF-8编码是EF BB BF。所以如果接收者收到以EF BB BF开头的字节流,就知道这是UTF-8编码了。
Windows就是使用BOM来标记文本文件的编码方式的。
2.xml文件存在非法字符
把xml 动手敲一遍,删除不该有的间隔符:比如空格,制表符(TAB)等。
异常提示是Content is not allowed in prolog.意思就是说文件开头的时候有问题。
怎么去掉BOM:
首先windows自带的记事本会在保存UTF-8编码的文件时不管是否含有BOM一律加上BOM,所以千万别用记事本。比较新版本的UltraEdit(以下简称UE,大家都是这么叫的)都对BOM支持比较好,所以推荐使用新版本的UE来解决这个问题。我用的版本是UltraEdit-32 11.00a+中文版。首先打开UE,选择菜单栏“高级”-“配置”,出现一个选项卡窗口,在“常规”选项卡中找到“保存时对所有UTF-8文件头标记(BOM)”和“对在UltraEdit里创建的新文件写入UTF-8文件头标记(如上面)”,把它们的复选框都取消不选,然后确定。这个时候UE默认情况下就不会对没有BOM的文件加入BOM,注意如果不执行上述操作UE默认也是会加的!那已经含有BOM的文件如何清除BOM呢?下面演示给大家。首先打开文件,选择菜单栏“文件”-“格式转换”-“UTF-8 转 ASCII”,这样文件会被转为ASCII编码,BOM就不会存在了,因为上面说过BOM是在UCS编码的头部的,然后再选择菜单栏“文件”-“格式转换”-“ASCII 转 UTF-8(Unicode编辑)”,这个时候文件会被转回为UTF-8编码,因为我们上面选了不自动加BOM,所以这个时候的文件是不带BOM的,然后保存文件。整个操作过程就完毕了。
转自:http://blog.csdn.net/zjh0723/article/details/4553995
相关推荐
NULL 博文链接:https://wilian.iteye.com/blog/1992365
首先,让我们来看看标题和描述中提到的具体错误:"org.xmlpull.v1.XmlPullParserException: PI must not start with xml" 和 "org.xml.sax.SAXParseException: PI must not start with xml"。这两个错误都是由于XML...
BeRoot, 特权升级项目 Windows/Linux/Mac BeRoot项目BeRoot项目是一个发布工具,用于检查常见的以找到一种方法来升级我们的特权。它已经被添加到 pupy 项目作为一个post开发模块( 所以它将在内存中执行而不需要触摸...
org.xml.sax.SAXParseException: cvc-complex-type.2.4.a: Invalid content was found starting with element 'area'. One of '{MathWorksID, type}' is expected. 运行hosaver: Warning: Could not find an exact ...
1. **SAX解析器接口**:`org.xml.sax.XMLReader`是SAX解析器的核心接口,它负责读取XML文档并触发事件。 2. **内容处理器**:在SAX解析过程中,我们需要实现`org.xml.sax.ContentHandler`接口,该接口定义了一系列...
javax.wsdl.WSDLException: WSDLException: faultCode=PARSER_ERROR: Problem parsing '- WSDL Document -'.: org.xml.sax.SAXParseException: The element type "p" must be terminated by the matching end-tag ...
1. **初始化解析器**:首先,我们需要创建一个SAX解析器实例,这通常通过实现`org.xml.sax.XMLReader`接口或使用`javax.xml.parsers.SAXParserFactory`类来完成。 2. **设置事件处理器**:SAX解析器在解析XML文档时...
DOM4J是基于DOM和SAX的XML解析库,它的设计目标是提供一个灵活且易于使用的API,用于处理XML文档。它具有以下关键特性: 1. **文档模型**:DOM4J提供了一种面向对象的XML文档模型,允许开发者以树形结构来操作XML...
首先,创建一个继承自`org.xml.sax.helpers.DefaultHandler`的类,重写其中的方法,如`startElement()`、`endElement()`和`characters()`,以处理XML元素的开始、结束和字符数据。 2. **注册解析器**: 使用`org....
好多版本是会报错的,[Fatal Error] :24:28: An ... org.xml.sax.SAXParseException: An invalid XML character (Unicode: 0xd863) was found in the element content of the documen.,这个版本是纠正过后重新打包做的
在处理大型XML文件时,可以考虑使用SAX(Simple API for XML)模型的`XmlReader`或基于XPath的`XPathDocument`,它们只读取和处理当前节点,降低了内存占用。 总结,`System.XML.dll`是.NET开发中处理XML的重要库,...
好多版本是会报错的,[Fatal Error] :24:28: An ... org.xml.sax.SAXParseException: An invalid XML character (Unicode: 0xd863) was found in the element content of the documen.,这个版本是纠正过后重新打包做的
首先,`SAXParseException`是XML解析过程中抛出的异常,表明在解析XML文档时遇到了结构上的问题。`cvc-elt.1`是一个XSD(XML Schema Definition)错误代码,表示在验证过程中找不到某个元素的声明。在这个特定的情况...
1. **导入所需库**:首先,需要在代码中导入SAX解析器的类,例如`org.xml.sax.XMLReader`和`org.xml.sax.helpers.DefaultHandler`。 2. **创建事件处理器**:定义一个继承自`DefaultHandler`的类,重写其中的回调...
XmlParser 是另一种用于解析XML的工具,它是基于SAX(Simple API for XML)的解析器,适合处理大体积的XML文件,因为它采用事件驱动的方式,不会一次性加载整个XML文档到内存中。这种方式可以有效避免内存消耗过大的...
SAX(Simple API for XML)是XML解析器的一种,它以事件驱动的方式解析XML文档,而非DOM(Document Object Model)解析器那样将整个XML文档加载到内存中。SAX解析器在处理大型XML文件时更高效,因为它只在需要时读取...
2. 创建一个实现了`org.xml.sax.helpers.DefaultHandler`接口的类,覆盖上述提到的事件处理器方法,定义具体的业务逻辑。 3. 实例化`SAXParserFactory`,并调用`newSAXParser()`方法创建`SAXParser`对象。 4. 使用`...
- 创建SAX解析器:使用`org.xml.sax.helpers.DefaultHandler`定义事件处理器,并通过`org.xml.sax.XMLReader`设置处理器。 - 解析XML文件:使用`XMLReader`的`parse()`方法解析XML文件。 - 处理事件:在事件处理器的...
import org.xml.sax.helpers.DefaultHandler; import javax.xml.parsers.SAXParserFactory; public class SaxExample extends DefaultHandler { @Override public void startElement(String uri, String local...
在这个"XML_DOM_SAX.rar"压缩包中,包含了可能的C#代码示例,用于演示如何使用DOM和SAX解析XML。`www.pudn.com.txt`可能是包含相关资源链接的文本文件,而`XML_DOM&SAX`可能是包含C#代码的文件,可以解压后查看具体...