dom4j写xml时&会被转义成&的解决方法?

问题描述

我通过dom4j生产xml文档时,如果我的文档里面有&、<等特殊字符的话,则会对其进行转义,有什么方法可以避免吗?原来的:<?xml version="1.0" encoding="ISO8859_1"?><QUERY name="query" bo="project_versions"> <ITEMS name="columns"> <COLUMN bo="project_versions" name="name" width="0"/> <COLUMN bo="project_versions" name="description" width="0"/> <COLUMN bo="project_versions" name="project_id" width="0"/> <COLUMN bo="project_versions" name="hs_creator" width="0"/> <COLUMN bo="project_versions" name="hs_created_time" width="0"/> </ITEMS> <ITEMS name="filters"> <FILTER type="cf" op="1" not="false"> <FILTER type="f" bo="project_versions" field="hs_created_time" func="4" argument="false" not="false" op="8" value="=T_LAST_W(1)"/> <FILTER type="f" bo="project_versions" field="hs_creator" func="0" argument="false" not="false" op="0" value="tom,neil,jerry"/> <FILTER type="f" bo="project_versions" field="hs_modifier" func="0" argument="false" not="false" op="0" value="ted,jerry"/> <FILTER type="f" bo="project_versions" field="description" func="0" argument="false" not="false" op="6" value="china 中国"/> </FILTER> </ITEMS> <ITEMS name="orderby"> <COLUMN bo="project_versions" name="description" asc="true"/> <COLUMN bo="project_versions" name="name" asc="false"/> </ITEMS> <ITEMS name="groupby"/></QUERY>新生成的,需要通过dom4j写入到数据库的:<?xml version="1.0" encoding="ISO8859_1"?><QUERY name="query" bo="project_versions"> <ITEMS name="columns"> <COLUMN bo="project_versions" name="name" width="0"/> <COLUMN bo="project_versions" name="description" width="0"/> <COLUMN bo="project_versions" name="project_id" width="0"/> <COLUMN bo="project_versions" name="hs_creator" width="0"/> <COLUMN bo="project_versions" name="hs_created_time" width="0"/> </ITEMS> <ITEMS name="filters"> <FILTER type="cf" op="1" not="false"> <FILTER type="f" bo="project_versions" field="hs_created_time" func="4" argument="false" not="false" op="8" value="=T_LAST_W(1)"/> <FILTER type="f" bo="project_versions" field="hs_creator" func="0" argument="false" not="false" op="0" value="tom00,neil00,jerry00"/> <FILTER type="f" bo="project_versions" field="hs_modifier" func="0" argument="false" not="false" op="0" value="ted00,jerry00"/> <FILTER type="f" bo="project_versions" field="description" func="0" argument="false" not="false" op="6" value="china &amp;#20013;&amp;#22269;"/> </FILTER> </ITEMS> <ITEMS name="orderby"> <COLUMN bo="project_versions" name="description" asc="true"/> <COLUMN bo="project_versions" name="name" asc="false"/> </ITEMS> <ITEMS name="groupby"/> </QUERY> 问题补充:飞雪无情 写道

解决方案

这是个问题,还在Attribute里的。你还之用setValue()。那这样可不可以,把你修改好的,新生成的xml转化成xml文本,然后替换里面的&amp;为&就好了!
解决方案二:
那你可以我说的第一种方式,替换法。把你的值china 中国替换成china &amp;#20013;&amp;#22269;这个值set进去就没有问题了吧
解决方案三:
需要设置: xw.setEscapeText(false); // 是否转义更详细的信息 http://lavasoft.blog.51cto.com/62575/347348参考下! 人家写的很不错的!
解决方案四:
dom4j在输出或保存xml时的XMLWriter类,可以通过setEscapeText方法设置是否转义
解决方案五:
把你的特殊字符替换了。下面是常用的五种下面是五个在XML文档中预定义好的实体:&lt;< 小于号&gt;> 大于号&amp;& 和&apos;' 单引号&quot;" 双引号比如你想输出&,那你的xml中要写成“&amp;”当然你这个值是写在属性里的,是value=""这样的形式,如果是一个区域断的话可以用XML CDATA,如<FILTER><value><![CDATA[china 中国]]></value></FILTER>就ok了

时间: 2024-09-20 00:26:04

dom4j写xml时&amp;amp;会被转义成&amp;amp;amp;的解决方法?的相关文章

dom4j写xml文件测试

dom4j写xml文件测试:     package com.yanek.demo.xml.test; import java.io.File;import java.io.FileWriter; import org.dom4j.Document;import org.dom4j.DocumentHelper;import org.dom4j.Element;import org.dom4j.io.XMLWriter; public class DOM4j {  public static v

代码-求助,写xml时一个没想明白的小问题

问题描述 求助,写xml时一个没想明白的小问题 这是我想得到的效果. 贴上代码: android:layout_width="fill_parent" android:layout_height="40dp" android:gravity="center_vertical" android:orientation="horizontal" > android:layout_width="0dp" a

yiic命令时提示“php.exe”不是内部或外部命令的解决方法_php实例

本文实例讲述了yiic命令时提示"php.exe"不是内部或外部命令的解决方法,分享给大家供大家参考.具体方法如下: 在CMD中运行 yiic webapp work 如果报"php.exe"不是内部命令,是这样的:原因是Yii自带的yiic.bat找不到php.exe. 解决方法: 因为没有加入环境变量,所以无法直接执行php.exe. 右击"我的电脑->属性->高级->环境变量->系统变量->PATH->编辑&quo

js提交时,传递中文乱码,有没有好一点的解决方法?

问题描述 js提交时,传递中文乱码,有没有好一点的解决方法? 解决方案 var cn = "中文";var url = "xxx.xx?" + encodeURI(encodeURI(cn);提交url比如Action引入import java.net.URLDecoder;获取String name = request.getParameter("name");name = URLDecoder.decode(name, "UTF-8

java 用 dom4j写xml疑问。

问题描述 准备被写入的字符串:str="<加重>abc</加重>defghijklmno<斜体>pq</斜体>rstuvwxyz";把str加到ele节点下,但是如果直接ele.setText(str),会把<加重><斜体>标记滤掉如果想保留,该怎么做能保留这些标记? 解决方案 解决方案二:Str中的标记是xml规范中的非法字符,如果可以的话,那就转化为实体引用吧:<--<或者,将'<'号做一个特

java编译时出现使用了未经检查或不安全的操作解决方法_java

在本人用editplus写java文件时碰到的问题. 复制代码 代码如下: import java.util.*;class collection{    public static void main(String[] args) {        Collection c1=new ArrayList(25);         c1.add(new String("one"));        c1.add(new String("two"));       

项目调试时出现用到的一个组件“访问被拒绝”的解决方法

访问|解决|项目 "/"应用程序中的服务器错误. ----------------------------------------------------------------配置错误 说明: 在处理向该请求提供服务所需的配置文件时出错.请检查下面的特定错误详细信息并适当地修改配置文件. 分析器错误信息: 访问被拒绝:"XpAspVNo".源错误: 行 196:    <add assembly="System.EnterpriseServices

MSSQL 大量数据时,建立索引或添加字段后保存更改提示超时的解决方法_mssql2005

一般我们都喜欢用数据库管理器的UI来对数据表结构进行更改,然后自然而然地点"保存" 按钮进行保存,但数据量比较大的时候,用这招往往会出现"无法创建索引"IX_索引名". 超时时间已到.在操作完成之前超时时间已过或服务器未响应. "这种错误.一时不知所措,蜡人张的文章 复制代码 代码如下: 修改表属性后使用"索引/键"对话框为一个大型表(记录数13,239,473)创建索引,提示: - 无法创建索引"IX_TableN

ssh连接时去掉“The authenticity of host xx can’t be established”解决方法

但前阵子我做备份系统恢复演习时才发现,我的rsync已经很久都没有sync成功了.我本来是采用密钥交换的方式来完成ssh中的验证,但可能由于主机的Key有变化,每次ssh连接(或rsync)时就会有提示:The authenticity of host *** can't be established ,需要输出一个"yes"的交互. 对于这个提示,我的脚本中一开始没有预知,所以没有做判断和处理(用expect也是容易处理的),所以我决定去掉这样的提示(关于宿主机的检查). 1. 使用