EL和JSTL中对xml的解析差异

js|xml

一,问题描述

最近我们的一个应用,要从支持jsp2.0的服务器移植到只支持sp1.2的服务器,经过一段时间的移植,测试发现与xml相关的一些数据的表现和存储出现了不少的问题,发现本来应该存储为xml字符串的信息,最终被存储为了解析后的纯文本,即xml中的标签全部被html化,例如<user>变为了<user>,我们的应用以前没有问题啊,为什么移植到jsp1.2的服务器后就出了xml的问题呢?

二,问题分析

后来经过排查发现,原来我们在jsp2.0的服务器中,使用了大量的EL语法,当移植到jsp1.2的服务器后,我们使用替换算法,将EL部分替换为了JSTL,例如:
<input type="text" name="username" value="${username}"/>
变为了:
<input type="text" name="username" value="<c:out value='${username}'/>"/>
这样对一般的EL而言,都是正确的,但是如果EL中存放的是xml字符串变量,那么这么替换后就会出问题,对于如下例子:
<input type="text" name="username" value="<c:out value='${xmlStr}'/>"/>
这样的话,input域中存放的将不会xml字符串,而是被转化为纯html的普通字符串,即所有的<>等等都被替换为了<$gt;。

三,解决办法

解决办法不难,只要将在c:out中加入ecapseXml属性即可,例如:
<input type="text" name="username" value="<c:out value='${xmlStr}' escapeXml='false'/>"/>
这样就解决了,input域中存储的依然是xml字符串。

四,思考

服务器环境的移植,绝非是一个简单的事情,所涉及的修改可能会很多,像xml这种问题只是其中的一种问题,另外还有数据源配置方式不同、JMS版本支持不一样等等。 

时间: 2024-10-24 19:45:49

EL和JSTL中对xml的解析差异的相关文章

Java中对XML的解析详解_java

先简单说下前三种方式: DOM方式:个人理解类似.net的XmlDocument,解析的时候效率不高,占用内存,不适合大XML的解析: SAX方式:基于事件的解析,当解析到xml的某个部分的时候,会触发特定事件,可以在自定义的解析类中定义当事件触发时要做得事情:个人感觉一种很另类的方式,不知道.Net体系下是否有没有类似的方式? StAX方式:个人理解类似.net的XmlReader方式,效率高,占用内存少,适用大XML的解析: 不过SAX方式之前也用过,本文主要介绍JAXB,这里只贴下主要代码

Android系统中AndroidManifest.xml文件解析

一.关于AndroidManifest.xml AndroidManifest.xml 是每个android程序中必须的文件.它位于整 个项目的根目录,描述了package中暴露的组件(activities, services, 等等),他们各自的实现类,各种 能被处理的数据和启动位置. 除了能声明程序中的Activities, ContentProviders, Services, 和Intent Receivers,还能指定permissions和instrumentation(安全控制和测

J2ME中KXML与NanoXML解析XML总结

XML全称为EXtensible Markup Language,中文称为可扩展标记语言,是一种计算机所能理解的信息符号语言.计算机之间可以通过此种标记语言处理包含各种信息的文章等功能.由于XML是一种允许相关人士自由决定的标记语言,所以称语言的可扩展性.XML作为一个标准,而且由于XML是一种纯文本格式存储文件,从而使得XML本身具备了很好的跨平台的特点,因此被广泛应用于网络数据交换的各个领域,包括网络通讯.不同程序语言平台之间的数据交流等方面. 要使用XML作为网络中传输通讯,势必在传输双方

xml-Android Xml文件中二进制数据怎么解析

问题描述 Android Xml文件中二进制数据怎么解析 二进制数据,base-64 解决方案 Android - 读取XML文件中的数据Android数据存储---Pull解析Xml文件将二进制数据放在XML文件中. 解决方案二: 读取那个二级制数据的节点 然后用base64 解密类库 解密 就可以吧

在android模拟器中解析不到tomcat中的xml文件,

问题描述 在android模拟器中解析不到tomcat中的xml文件, 在android模拟器中解析不到tomcat中的xml文件,但是在浏览器中使用相同的地址,却可以访问 package xtm.mp3player; import xtm.download.HttpDownloader; import android.app.ListActivity; import android.os.Bundle; import android.util.Log; import android.view.

xml-如何解析 android 中的 XML?

问题描述 如何解析 android 中的 XML? 我需要把下面的 xml 解析 为输出: String id="3" String name="str1" String path="/mnt/sdcard/path2" String type="2" String desc="des3)" 在 android中如何实现呢? <xmldump> <mfs id="3"

PHP中的XML解析的5种方法

[前言]不管是桌面软件开发,还是WEB应用,XML无处不在!然而在平时的工作中,仅仅是使用一些已经封装好的类对XML对于处理,包括生成,解析等.假期有空,于是将PHP中的几种XML解析方法总结如下: 以解析Google API 接口提供的天气情况为例,我们取今天的天气及气温.API地址:http://www.google.com/ig/api?weather=shenzhen [XML文件内容] <?xml version="1.0"?> <xml_api_reply

javascript-asp.net中如何把xml字符串解析成表格呈现在网页中?(最好有实现代码)

问题描述 asp.net中如何把xml字符串解析成表格呈现在网页中?(最好有实现代码) xml字符串名称为strResponseXml,内容如下: <?xml version='1.0'?>013海淀区0>343朝阳区3>783密云区7>9103海淀区9> 现想通过网页上的一个按钮事件把以上字符串解析成如下的表格形式:FID ID KIND NAME0 1 3 海淀区3 4 3 朝阳区7 8 3 密云区9 10 3 海淀区

android XMl 解析神奇xstream 五: 把复杂对象转换成 xml ,并写入SD卡中的xml文件

前言:对xstream不理解的请看: android XMl 解析神奇xstream 一: 解析android项目中 asset 文件夹 下的 aa.xml 文件 android XMl 解析神奇xstream 二: 把对象转换成xml android XMl 解析神奇xstream 三: 把复杂对象转换成 xml android XMl 解析神奇xstream 四: 将复杂的xml文件解析为对象   1.建立JavaBeen package com.android10; public clas