`
楚若之夜
  • 浏览: 125048 次
  • 性别: Icon_minigender_1
  • 来自: 大连
社区版块
存档分类
最新评论

xml的“特殊字符”

阅读更多
  遇到这一方面的问题是因为我试图把一个对象序列化之后存贮到xml文件中,然后从xml文件中读取字符串,并反序列化对象(hadoop mapreduce程序中通过JobConf向tasktracker传送对象)。有关序列化:
     当我把序列化之后的数据直接存在xml中后,在解析xml时遇到解析错误,原因是有非法字符。在详细阅读xml的说明之后才发现:< > ' " &是不允许作为xml的PCDATA的。要使用这几个字符,必须要把他们替换为内建实体:

实体引用  字符
&lt; <
&gt; >
&amp; &
&quot; "
&apos; '

所以,最直接的方法就是自己控制,在写入xml文件时把特殊字符转为实体引用,在读取的时候,再转回来。当然还有另外一个方法就是不把字符串当PCDATA,而是当成CDATA来使用(没有测试)。

   用实体引用的方法太麻烦,而我的应用xml的格式不能自己规定,所以只好寻找另外的方法:BASE64编码。这是一种常用在网络传输数据的编码方式。把存在这些非法字符的字符编码成base64编码,就不会有这些字符了。最重要的是java api中提供了这种编码的编码器和解码器,位于sun.misc的BASE64Encoder和BASE64Decoder。这样就可以把序列化之后得到的字节流转化成字符串了。并且也可以存贮在xml文件中。
   不过这两个类并不是sun的开放api,编译会有警告。
分享到:
评论

相关推荐

    解析XML特殊字符方法

    XML(eXtensible Markup ...总结来说,理解并正确处理XML特殊字符是XML编程中的基础,也是保证数据正确传输和解析的关键。不论是手动编写XML文档,还是通过编程语言操作XML,都应确保特殊字符被适当地转义或编码。

    xml中的特殊字符替换

    在XML(可扩展标记语言)中,特殊字符的处理是一项重要的技术细节,它直接关系到文档的正确解析和展示。由于XML是一种用于标记文本的元语言,它使用一系列的规则来定义数据结构和数据类型,因此,对于XML文档中可能...

    xml转javaBean,javaBean转xml,xml标签大小写问题,以及对xml特殊符号的处理

    CDATA(Character Data)是XML中的一种特殊语法,用于表示一段纯文本,其中的XML特殊字符(如", "&gt;", "&")不需要转义。在XML中,可以使用`&lt;![CDATA[ ... ]]&gt;`来创建CDATA段。当处理包含大量特殊字符的数据时,使用...

    xml 的特殊字符的处理方法

    ### XML特殊字符转义 1. `转义为 `&lt;` 2. `&gt;` 转义为 `&gt;` 3. `&` 转义为 `&amp;` 4. `'` 转义为 `&apos;` 5. `"` 转义为 `&quot;` 例如,如果你的XML数据中包含字符串 `"It's a &lt;good&gt; day!"`,你应该将其...

    C# XML字符串包含特殊字符的处理转换方法小结

    在C#中,处理XML字符串时,由于XML的语法规则,某些特殊字符不能直接出现在XML文档中,否则会导致解析错误。这些特殊字符包括小于号 `、大于号 `&gt;`、和与号 `&`。此外,对于XML属性值,单引号 `'` 和双引号 `"` 也...

    mybatis xml中特殊字符处理及特殊符号

    在MyBatis中,XML配置文件常常用于定义SQL语句,但XML本身是一种结构化语言,对于某些特殊字符,如 `, `&gt;`, `&` 等,XML解析器会将其视为标签或实体引用,这可能导致解析错误。因此,我们需要正确处理这些特殊字符以...

    dom4j解析xml字符串

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

    JAVA对象转换成XML(CDATA)

    当遇到包含特殊字符如 "和 "&" 的文本时,XML解析器可能会产生错误,因为这些字符在XML语法中有特定含义。为了解决这个问题,我们可以使用CDATA(Character Data)段来封装这些文本,使得XML解析器将其视为纯文本...

    Android xml转义字符

    由于XML是一种标记语言,它对某些字符有特定的规定,如果直接将这些特殊字符写入XML文件,则可能会导致解析错误或出现非预期的结果。因此,在XML文件中使用特殊字符时,需要采用转义字符来替代。 #### 特殊字符与...

    String_Resources中定义一些特殊字符串

    每个子目录下的`string.xml`文件应具有相同的`name`属性,以便Android系统根据用户的语言设置自动选择相应的字符串资源。如果没有找到特定语言的字符串资源,系统会回退到默认的`values`目录下的资源。 2. **定义...

    Mybatis在Mapper.xml文件中的转义字符处理方式.pdf

    然而,在XML中直接使用一些特殊字符,比如大于(&gt;)、小于(&lt;)、等于(=)、单引号(')和双引号(")等,可能会导致XML解析错误,因为这些字符在XML文档中有特定的含义。为了解决这个问题,Mybatis提供了一些处理...

    XStream:Object与Xml字符串 互相转换

    XStream是一个强大的Java库,它允许开发者方便地将Java对象序列化为XML,同时也能将XML数据反序列化回对应的Java对象。这个过程对于数据存储、网络传输或者XML配置文件的处理非常有用。在处理多个同名子节点以及节点...

    SQL Server查询中的特殊字符处理(C#代码)

    在IT领域,尤其是在数据库操作与编程中,对特殊字符的处理是至关重要的。特殊字符,如方括号、单引号、百分号、下划线和脱字号等,在SQL语句中有特定的意义,若不正确处理,可能会导致SQL语法错误或注入攻击。本文将...

    xml和web特殊字符

    - 如上述代码所示,可以编写一个函数`covert_xml_special_char`来处理这些特殊字符。这个函数通过Python的字符串`replace`方法,将这些特殊字符替换为它们对应的实体引用。 - `&amp;` 用于转义 `&` - `&quot;` ...

    ibatis sql语句对条件中特殊字符% # 处理

    特别是在使用类似`LIKE`这样的操作符时,如果用户输入的数据中含有`%`、`_`或`#`等特殊字符,那么这些字符可能会被SQL解释器误认为是通配符或者特殊符号,导致查询结果不符合预期。本文将详细介绍如何在ibatis框架下...

    map/list集合转化成xml字符串 xml字符串转化成map/list集合

    在Java编程中,数据结构与XML(eXtensible Markup Language)之间的转换是常见的操作,尤其是在处理数据交换或存储时。...在进行这样的转换时,确保处理好异常、空值和特殊字符,以确保数据的完整性和安全性。

    sed_parse_xml

    2. **处理XML特殊字符**:XML中的`、`&gt;`、`&`等字符有特殊含义,需要转义。在使用`sed`时,需要确保这些字符不会干扰到正则表达式的解析。例如,使用`\&gt;`来匹配实际的`&gt;`字符。 3. **行内与行间匹配**:由于`sed`...

    Svg特殊字符

    在SVG文档中,特殊字符用于表示非ASCII码范围内的字符,如版权符号、引号、货币符号等。这些字符无法通过普通的键盘输入,但在HTML或SVG中,可以使用实体引用(entity reference)或数值引用(numeric character ...

    xml基础教程

    XML还提供了一种特殊的数据区域——CDATA区,用于包含不会被解析器处理的文本数据,通常用于包含可能包含XML特殊字符的脚本或样式代码。需要注意的是,CDATA区内不能嵌套其他CDATA,且只能作为元素内容,不能作为...

Global site tag (gtag.js) - Google Analytics