xml 的特殊字符的处理方法
遇到这一方面的问题是因为我试图把一个对象序列化之后存贮到xml文件中,然后从xml文件中读取字符串,并反序列化对象(hadoop mapreduce程序中通过JobConf向tasktracker传送对象)。
有关序列化:
当我把序列化之后的数据直接存在xml中后,在解析xml时遇到解析错误,原因是有非法字符。在详细阅读xml的说明之后才发现:< > ' " &是不允许作为xml的PCDATA的。要使用这几个字符,必须要把他们替换为内建实体:
实体引用 字符
< <
> >
& &
" "
' '
所以,最直接的方法就是自己控制,在写入xml文件时把特殊字符转为实体引用,在读取的时候,再转回来。当然还有另外一个方法就是不把字符串当PCDATA,而是当成CDATA来使用(没有测试)。
用实体引用的方法太麻烦,而我的应用xml的格式不能自己规定,所以只好寻找另外的方法:BASE64编码。这是一种常用在网络传输数据的编码方式。把存在这些非法字符的字符编码成base64编码,就不会有这些字符了。最重要的是java api中提供了这种编码的编码器和解码器,位于sun.misc的BASE64Encoder和BASE64Decoder。这样就可以把序列化之后得到的字节流转化成字符串了。并且也可以存贮在xml文件中。
不过这两个类并不是sun的开放api,编译会有警告。
相关推荐
-
Java全面解析XML格式串(JDOM解析)
Java全面解析XML格式串(JDOM解析) import java.io.IOException; import java.io.StringReader; import java.util.List; import org.jdom.Document; import org.jdom.Element; import org.jdom.JDOMException; import org.jdom.Namespace; import org.jdom.input.SAXBuilder; impo
-
基于javascript如何传递特殊字符
在没步入正轨之前,先给大家介绍JavaScript 特殊字符 你可以在 JavaScript 中使用反斜杠来向文本字符串添加特殊字符. 插入特殊字符 反斜杠用来在文本字符串中插入省略号.换行符.引号和其他特殊字符. 请看下面的 JavaScript 代码: var txt="We are the so-called "Vikings" from the north." document.write(txt) 在 JavaScript 中,字符串使用单引号或者双引号来
-
SQL Server解析XML数据的方法详解
本文实例讲述了SQL Server解析XML数据的方法.分享给大家供大家参考,具体如下: --5.读取XML --下面为多种方法从XML中读取EMAIL DECLARE @x XML SELECT @x = ' <People> <dongsheng> <Info Name="Email">dongsheng@xxyy.com</Info> <Info Name="Phone">678945546</
-
js操作XML文件的实现方法兼容IE与FireFox
最近项目中用到了xml,需求是用户安装产品时先把一系列的数据保存到xml文件中,当执行到最后一步时才写入数据库,这样最大限度的减少了数据库的访问,于是不得不纠结在各浏览器的兼容性的问题(悲哀啊....) 进入正文 下面是一个xml文件 (createInstal.xml) <?xml version="1.0" encoding="utf-8"?> <info> <Item> <id descrption="级别&
-
js的form表单提交url传参数(包含+等特殊字符)的两种解决方法
方法一:(伪装form表单提交) linkredwin = function(A,B,C,D,E,F,G){ var formredwin = document.createElement("form"); formredwin.method = 'POST'; document.body.appendChild(formredwin); formredwin.action = "http://www.A.com/A.wiki?A=" +encodeURI(A) +
-
Python连接MySQL并使用fetchall()方法过滤特殊字符
来一个简单的例子,看Python如何操作数据库,相比Java的JDBC来说,确实非常简单,省去了很多复杂的重复工作,只关心数据的获取与操作. 准备工作 需要有相应的环境和模块: Ubuntu 14.04 64bit Python 2.7.6 MySQLdb 注意:Ubuntu 自带安装了Python,但是要使用Python连接数据库,还需要安装MySQLdb模块,安装方法也很简单: sudo apt-get install MySQLdb 然后进入Python环境,import这个包,如果没有报
-
Android解析XML的三种方式SAX、Pull、Dom
在android开发中,经常用到去解析xml文件,常见的解析xml的方式有一下三种:SAX.Pull.Dom解析方式.最近做了一个android版的CSDN阅读器,用到了其中的两种(sax,pull),本文对android解析xml的这三种方式进行一次总结. 今天解析的xml示例(channels.xml)如下: <?xml version="1.0" encoding="utf-8"?> <channel> <item id=&quo
-
两种方法解决javascript url post 特殊字符转义 + & #
最近在用url 传特殊字符的时候发现数据丢失了. 其实不是丢失,比如 '+'它会当成连接字符来处理了. 一.替换成16进制字符,在这列几个常用的转换 + 空格 / ? % & = # %2B %20 %2F %3F %25 %26 &3D %23 复制代码 代码如下: var post_Str = apply_name.replace(/\+/g, "%2B");//"+"转义 var post_Str= post_Str.replace(/\&
-
往xml中更新节点的实例代码
往xml中更新节点的实例代码 /* System.out.println("2323"); DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); DocumentBuilder docbuilder = factory.newDocumentBuilder(); Document parse = docbuilder .parse(new File("src/ProdQuery.xml&q
-
xml 的特殊字符的处理方法
遇到这一方面的问题是因为我试图把一个对象序列化之后存贮到xml文件中,然后从xml文件中读取字符串,并反序列化对象(hadoop mapreduce程序中通过JobConf向tasktracker传送对象). 有关序列化: 当我把序列化之后的数据直接存在xml中后,在解析xml时遇到解析错误,原因是有非法字符.在详细阅读xml的说明之后才发现:< > ' " &是不允许作为xml的PCDATA的.要使用这几个字符,必须要把他们替换为内建实体: 实体引用 字符 < &l
-
mybatis xml中特殊字符处理及特殊符号
下面给大家介绍mybatis xml 中特殊字符处理方法,具体内容如下所示: 1,CDATA区: 它的全称为character data,以"<![CDATA[ "开始,以" ]]>" 结束,在两者之间嵌入不想被解析程序解析的原始数据,解析器不对CDATA区中的内容进行解析,而是将这些数据原封不动地交给下游程序处理. 2,特殊字符 : xml 中表示: <= 小于等于. >= 大于等于 需加 这样的标记: <![C
-
JavaScript将XML转成JSON的方法
本文实例讲述了JavaScript将XML转成JSON的方法.分享给大家供大家参考.具体方法如下: 1. JavaScript代码如下: 复制代码 代码如下: // Changes XML to JSON function xmlToJson(xml) { // Create the return object var obj = {}; if (xml.nodeType == 1) { // element // do attributes
-
dom4j创建和解析xml文档的实现方法
DOM4J解析 特征: 1.JDOM的一种智能分支,它合并了许多超出基本XML文档表示的功能. 2.它使用接口和抽象基本类方法. 3.具有性能优异.灵活性好.功能强大和极端易用的特点. 4.是一个开放源码的文件 jar包:dom4j-1.6.1.jar 创建 book.xml: package com.example.xml.dom4j; import java.io.FileWriter; import org.dom4j.Document; import org.dom4j.Document
-
Java获取XML节点总结之读取XML文档节点的方法
dom4j是Java的XML API,用来读写XML文件的.目前有很多场景中使用dom4j来读写xml的. 要使用dom4j开发,需要下载导入dom4j相应的jar文件. 官网下载:http://www.dom4j.org/dom4j-1.6.1/ github下载:http://dom4j.github.io/ 下载解压之后如图所示: 我们只需要把dom4j-1.6.1.jar文件构建到我们开发项目中就可以了. 下面就以Eclipse创建java项目的构建方法为例说明: 声明:本Java项目的
-
C#针对xml文件转化Dictionary的方法
本文实例讲述了C#针对xml文件转化Dictionary的方法.分享给大家供大家参考.具体实现方法如下: 下面是xml文件: 复制代码 代码如下: <?xml version="1.0" encoding="utf-8" ?> <nodes> <国土局> <name>市局国土资源局</name> <code>330</code> <受理 telephone="8820
-
PHP实现使用DOM将XML数据存入数组的方法示例
本文实例讲述了PHP实现使用DOM将XML数据存入数组的方法.分享给大家供大家参考,具体如下: <?php $doc = new DOMDocument('1.0','utf-8'); $doc->load("config.xml"); $roots=$doc->documentElement;//获取根节点也就是config(仅有一个) $childs=$roots->childNodes;//获取根节点下所有子节点也就是 db smarty for($i=0
-
通过php删除xml文档内容的方法
本文实例讲述了通过php删除xml文档内容的方法.分享给大家供大家参考.具体实现方法如下: 第一种情况:删除一个student节点 复制代码 代码如下: <?php //1.创建一个DOMDocument对象.该对象就表示 xml文件 $xmldoc = new DOMDocument(); //2.加载xml文件(指定要解析哪个xml文件,此时dom树节点就会加载到内存中) $xmldoc->load("class.xml"); //3.删除一条学生student信息记录
-
通过php添加xml文档内容的方法
本文实例讲述了通过php添加xml文档内容的方法.分享给大家供大家参考.具体分析如下: 这里讲述的添加xml文档内容,从上一篇<DOM基础及php读取xml内容操作的方法>继续,代码如下: 复制代码 代码如下: <?php //1.创建一个DOMDocument对象.该对象就表示 xml文件 $xmldoc = new DOMDocument(); //2.加载xml文件(指定要解析哪个xml文件,此时dom树节点就会加载到内存中) $xmldoc->load("clas
-
php解析xml 的四种简单方法(附实例)
XML处理是开发过程中经常遇到的,PHP对其也有很丰富的支持,本文只是对其中某几种解析技术做简要说明,包括:Xml parser, SimpleXML, XMLReader, DOMDocument. 1. XML Expat Parser: XML Parser使用Expat XML解析器.Expat是一种基于事件的解析器,它把XML文档视为一系列事件.当某个事件发生时,它调用一个指定的函数处理它.Expat是无验证的解析器,忽略任何链接到文档的DTD.但是,如果文档的形式不好,则会以一个错误
随机推荐
- nginx使用nginx-rtmp-module模块实现直播间功能
- Android项目仿UC浏览器和360手机卫士消息常驻栏(通知栏)
- iOS实现图片保存与搜索功能
- 详解Objective-C设计模式编程中对备忘录模式的运用
- python xml解析实例详解
- 微信小程序 新建登录页并实现tabBar隐藏
- 详解thinkphp5+swoole实现异步邮件群发(SMTP方式)
- php自定义hash函数实例
- JSP学习笔记
- Mysql中文乱码以及导出为sql语句和Excel问题解决方法[图文]
- Knockoutjs的环境搭建教程
- 微信小程序开发一键登录 获取session_key和openid实例
- Powershell小技巧之轻松从网上下载文件
- jQuery ajax时间差导致的变量赋值问题分析
- jQuery插件实现适用于移动端的地址选择器
- js文字链接的热点提示效果代码
- 浅析C++中模板的那点事
- window resize和scroll事件的基本优化思路
- 基于Django contrib Comments 评论模块(详解)
- Django权限机制实现代码详解