0 0

dom4j 读取 XML 文件“特殊字符”问题, 困扰很久,请大家帮忙30

test.xml,内容如下

<?xml version="1.0" encoding="gbk"?>
<DOCUMENT>
<item>
<display>
<pbid>77</pbid>
<introduction> 这里的特殊字符 &reg;</introduction>
</display>
</item>
</DOCUMENT>


使用dom4j 读取时 ,报如下 Exception ;

Nested exception:
org.xml.sax.SAXParseException: The entity "reg" was referenced, but not declared.
at com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.createSAXParseException(ErrorHandlerWrapper.java:195)
at com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.fatalError(ErrorHandlerWrapper.java:174)
at com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(XMLErrorReporter.java:388)
at com.sun.org.apache.xerces.internal.impl.XMLScanner.reportFatalError(XMLScanner.java:1411)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanEntityReference(XMLDocumentFragmentScannerImpl.java:1892)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$FragmentContentDriver.next(XMLDocumentFragmentScannerImpl.java:3024)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(XMLDocumentScannerImpl.java:648)
at com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.next(XMLNSDocumentScannerImpl.java:140)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:510)
at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:807)
at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:737)
at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:107)
at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1205)
at com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.parse(SAXParserImpl.java:522)
at org.dom4j.io.SAXReader.read(SAXReader.java:465)
at org.dom4j.io.SAXReader.read(SAXReader.java:264)
at com.cybercare.util.Branda.getBrandTree(Branda.java:22)
at com.cybercare.util.Start.main(Start.java:11)


请问如何在不人工手动改变test.xml文件的情况下, 通过 dom4j 解析 test.xml文件中的“ &reg; " 等特殊字符?   谢谢大家 ~~
2010年7月21日 14:20

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

0 0

采纳的答案

不想被解析的文本最好使用<![CDATA[content]]>包含起来,content改为你想要的文本即可。被包含后就是原始文本,不会解析,content可以替换成任何字符,包括xml的保留字。

2010年7月21日 16:09
0 0

以前就碰到类似的问题。。。

2010年7月31日 14:52
0 0

<introduction><![CDATA[这里的特殊字符 &reg;]]></introduction>

2010年7月30日 15:11
0 0

<introduction> ![CDATA[这里的特殊字符 &reg;]]</introduction>
这是通用的处理方法!别费脑筋的。

2010年7月30日 15:00
0 0

最好还是<![CDATA[content]]>

2010年7月30日 08:33
0 0

 

2010年7月29日 08:57
0 0

html 与 xml的转义符不同, xml就只有5个:

< &lt;
> &gt;
& &amp;
" &quot;
' &apos;

所以这样写肯定解析错误

2010年7月26日 20:13
0 0

对 cdata 标明就行了

2010年7月25日 11:13
0 0

<![CDATA[content]]>,赞同

2010年7月23日 16:55
0 0

将&reg;改为&amp;reg;试一试。
我没试,个人感觉 飞雪无情 的方法应该是行的。

2010年7月21日 21:58
0 0

将文件内容改为如下:
<?xml version="1.0" encoding="gbk"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<DOCUMENT>
<item>
<display>
<pbid>77</pbid>
<introduction> 这里的特殊字符 &reg;</introduction>
</display>
</item>
</DOCUMENT>

我这里能顺利解析了。

2010年7月21日 15:09
0 0

好像是不认识 &reg; ,应该要添加一个名空间。可以试试在XML文件中添加一个DOCTYPE信息。

2010年7月21日 14:58

相关推荐

    DOM4J 读取xml字符串

    NULL 博文链接:https://navylee.iteye.com/blog/727103

    dom4j以String的方式读取XML的内容,并给String的值赋值,写入XML中

    dom4j以String的方式读取XML的内容,并给String的值赋值,写入XML中

    dom4j解析xml字符串

    // 下面的是通过解析xml字符串的 doc = DocumentHelper.parseText(xml); // 将字符串转为XML Element rootElt = doc.getRootElement(); // 获取根节点 System.out.println("根节点:"+ rootElt.getName()); // ...

    C#读取XML文件并显示在DataGrid组件中

    摘要:C#源码,文件操作,读取XML,DataGrid C#读取XML文件并将其内容显示在DataGrid组件中。可以学习一下如何使用C#读取XML中的节点数据,并将数据内容捆绑在DataGrid列表控件中,本例虽然简单,但在C#应用中是相当...

    xml解析文件的两种方式

    使用SAX DOM两种解析方式解析文件

    dom4j用法+例子

    详细讲解dom4j用法+例子 1.读取并解析XML文档 2. 取得Root节点 3.遍历XML树 4. XPath支持 5. 字符串与XML的转换 6. 用XSLT转换XML 7. 创建XML 8. 文件输出

    xml字符串转化Dataset

    由于XML的易共享性等众多优点,XML技术越来越多地被应用于企业数据处理等领域,如应用于企业报表、新闻发布、会计数据处理等等。 XML正快速成为从中间层传送数据到桌面的工具,由于XML的数据可以通过中间层代理与...

    Tinyxml 源代码(VC6 & VS2005)

    从流中读取XML使其可用于网络传输。通过些小技巧,它知道当XML文档读取完毕时,流后面的就一定是其它数据了。TinyXML总假定当它读取到根结点后XML数据就结束了。换句话说,那些具有不止一个根元素的文档是无法被正确...

    DWR.xml配置文件说明书(含源码)

    DWR 自动将DOM、DOM4J、JDOM和XOM转换成DOM树,前面这几种类型都仅仅返回Document,Element,Node.DWR会自动将这些转换成浏览器DOM对象.通常在启动JDOM Converter时会有一个提示信息,除非你想采用JDOMconverter否则可以...

    xml入门教程/xml入门教程

    7)注意特殊字符,使用时需要使用转义字符。 注意: 1.第一行一定要写&lt;?xml verson="1.0"?&gt; 2.xml文件是由元素和元素的内容以及属性组成的,一个xml文件中只能有一个根元素,标签和标签的内容加在一起叫作一个元素。...

    XML轻松学习手册--XML肯定是未来的发展趋势,不论是网页设计师还是网络程序员,都应该及时学习和了解

    CSS大家很熟悉了,全称是Cascading Style Sheets(层叠样式表),是目前用来在浏览器上显示XML文档的主要方法。 3.Behaviors Behaviors现在还没有成为标准。它是微软的IE浏览器特有的功能,用它可以对XML标识设定...

    XML纯解析源码(JAVA 不含DOM类)

    * 将文件中的内容读取到字符串对象中 * * @param f * 要读取的 * @return 文件f中的Text内容 * @throws IOException */ public String read(File f) {} =========以下是标签对象类的部分方法============...

    Javascript 读取操作Sql中的Xml字段

    在一个项目当中,我们需要把数据库中的Xml字段中的信息表现在页面中,如果用Sql进行操作,读取。这样的话,必然导致太复杂,于是我想到了,如果把Xml字段先读出来,然后用Js去操作,这样岂不是简单了许多,于是网上...

    mysql乱码问题分析与解决方法

    开发过程中总避免不了遇到恶心的乱码,或者由乱码引发的一系列问题。... 交代背景: 要实现的功能很简单,用dom4J读取XML文件然后借助Spring以及Hibernate将数据写入到MySql数据库(多表)中,当然整个过程是由Spring

    sxd-document — Rust中的XML库-Rust开发

    概述该项目目前分为两个板条箱:文档-基本DOM操作和从字符串读取/写入XML。 xpath-XPath 1.0表达式的实现。 也有一些分散的实用程序可在命令行中播放。 将来,我希望增加对XSLT 1.0的支持。 目标这个项目有两个目标...

    ASP200问.EXE

    145.如何通过XMLDom在服务器端操作XML文件(示例一) 145.如何通过XMLDom在服务器端操作XML文件(示例二) 146.如何使用XML实现不刷新页面查询数据库 147.如何把HTML表单提交的数据转化成XML文件(第一步) 147.如何...

    易语言-Mini-XML迷你型XML解析器

    Mini-XML支持读取UTF-8和UTF-16和UTF-8编码的XML文件和字符串写。数据存储在链表树结构,保留XML数据的层次结构,并且没有预设的限制,可用内存维护任意元素名称,属性和属性值。 Mini-XML特点:采用指针式操作,高...

Global site tag (gtag.js) - Google Analytics