`
yt
  • 浏览: 17177 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

wap应用需要注意的XML非法字符问题

阅读更多
做产品的bug修复中发现如果邮件主题出现一些特殊字符,会导致手机模拟器无法打开网页,xml无法被正常解析。

第一步分析以为是转义字符引起的xml标签不对称,对邮件主题加CDATA标签,重启服务后,问题仍然出现。



经过查找资料, 发现是XML文件中包含了一些不允许在XML中使用的字符(控制符). XML规范中规定了允许的字符范围(http://www.w3.org/TR/REC-xml#dt-character):

Char ::= #x9 | #xA | #xD | [#x20-#xD7FF] | [#xE000-#xFFFD] | [#x10000-#x10FFFF]



所以这类以xml为内容载体的wap内容格式,所有显示内容都需隔绝除上述范围的编码值,否则会产生严重的功能障碍。在邮件主题和内容的标签加上如下处理:



    /**

     * 使用空格替代非法字符.

     *

     * @param text

     * @return

     */

    public static String replaceInvaldateCharacter(String text)

    {

        if (text != null) {

            char[] data = text.toCharArray();

            for (int i = 0; i < data.length; i++) {

                if(!isXMLCharacter( data[i])){

                    data[i] = 0x20;

                }

            }

            return new String(data);

        }

        return text;

    }



    /**

     * 检查字符是否为合法的xml字符。

     * XML规范中规定了允许的字符范围(http://www.w3.org/TR/REC-xml#dt-character):

     * Char ::= #x9 | #xA | #xD | [#x20-#xD7FF] | [#xE000-#xFFFD] | [#x10000-#x10FFFF]

     *

     * @param c

     * @return

     */

    private static boolean isXMLCharacter(int c)

    {



        if (c <= 0xD7FF) {

            if (c >= 0x20) {

                return true;

            }

            else {

                return c == '\n' ||  c == '\r' || c == '\t';

            }

        }



        return (c>=0xE000 && c<= 0xFFFD) || (c>=0x10000 && c<= 0x10FFFF);

}



经过非法字符的替换处理后,包含非法XML字符的邮件可以正常阅读。

综上所述,对于wml出现的内容,需要做以下处理:

1、   替换非法的XML字符

2、对于可能出现’<’,’/’,’&’,’>’等字符的内容需要进行转义字符替换,或者使用CDATA包起来
3
0
分享到:
评论

相关推荐

    xml中的非法字符问题

    xml中的非法字符问题

    解析XML特殊字符方法

    在XML配置文件中,如Spring框架的bean配置,或者在XML文档存储用户输入时,都需要特别注意特殊字符的处理,以避免解析错误或安全问题,如跨站脚本攻击(XSS)。 总结来说,理解并正确处理XML特殊字符是XML编程中的...

    java解析xml字符串

    在IT领域,特别是Java开发中,处理XML数据是一项常见的任务。...这对于在Java应用程序中处理动态生成或外部提供的XML数据非常有用。掌握这一技能,开发者能够更有效地集成XML数据处理功能到自己的软件项目中。

    C# 方式生成xml格式字符串

    生成xml格式字符串、序列化XML 对象=》XML文本、反序列化 XML文本=》对象 等方法,对象和xml之间的相互转换、datatable方式转换为xml文本的工具类方法 C#语言

    纯C语言解析xml字符串

    纯C语言解析xml字符串,有实例,保证可用,含makefile xmlparse.c xmlparse.h testxml.c 目录:/export/home/chcard/testxml 日志:/export/home/chcard/log testxml.c 是一个测试用例,包含了常用的方法,并有注解 ...

    Android xml转义字符

    2. **编码问题**:在处理包含特殊字符的字符串时,还需要考虑字符编码的问题。例如,如果字符串中包含非英文字符,需要确保使用正确的编码方式(如UTF-8)。 3. **测试验证**:在使用了转义字符后,应该在不同设备和...

    word文件批量替换(word转xml、xml转字符串、doc转docx)

    XML文件本身是以结构化的文本形式存在的,但有时我们需要将其转换为单一的字符串,这可能是因为要存储在数据库中,或者作为网络传输的数据。这可以通过编程语言中的XML处理库完成,如Python的xml.etree.ElementTree...

    XML 非法字符(转义字符)

    总之,XML的非法字符是XML解析和数据交换中需要特别注意的问题。正确使用转义字符是确保XML文档有效且无误的关键。在处理XML内容时,养成检查并转义非法字符的习惯,能够避免许多不必要的麻烦,提升开发效率和数据的...

    字符串转化为XML文件

    字符串转化为XML文件 本文将详细介绍字符串转化为XML文件的知识点,包括XML文件的基本结构、StringBuilder类的使用、XML文档对象模型(DOM)、XML文件的保存等。 XML文件的基本结构 XML(Extensible Markup ...

    c#生成XML字符串

    c#生成XML字符串,简单易懂,中间过程不生成XML文件,不用担心多个操作的访问问题,返回结果为标准的XMl格式。

    xml中的特殊字符替换

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

    Js+XML 操作应用:JS解析XML文件和XML字符串 支付接口常用

    Js+XML 操作应用:JS解析XML文件和XML字符串 支付接口常用,亲测可用!

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

    首先,你需要创建一个`JAXBContext`实例,然后使用`Marshaller`对象将`Map`对象写入XML字符串。 ```java import javax.xml.bind.JAXBContext; import javax.xml.bind.Marshaller; public String mapToXml(Map, ...

    js的XML解析器 可以解析XMl文件和XML字符串

    - **jQuery**:jQuery提供了方便的`.parseXML()`函数,简化了XML解析,但同样需要注意浏览器兼容性问题。 - **Ajax请求**:通过XMLHttpRequest或fetch API,可以获取XML文件并自动进行解码,然后使用DOMParser解析...

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

    XML(eXtensible Markup Language)是一种用于标记数据的语言,广泛应用在软件开发、Web服务、配置文件等领域。本文将深入探讨XML与JavaBean之间的转换、XML标签的大小写规则、XML特殊符号的处理以及CDATA的生成。 ...

    Android 对 strings.xml 的字符串进行格式化

    在Android开发过程中,为了实现应用的国际化或多语言支持,开发者通常会使用`strings.xml`文件来存储各种字符串资源。这些字符串资源不仅可以被直接引用显示在界面上,还可以通过格式化的方式动态填充变量值,从而...

    DOM、SAX、DOM4J、JDOM、StAX生成XML并返回XML字符串形式

    下面将详细介绍这些解析器的工作原理以及它们在生成XML并返回XML字符串形式时的应用。 1. DOM (Document Object Model) DOM是一种基于树形结构的XML解析模型,它将整个XML文档加载到内存中,形成一个完整的文档对象...

    JDK自带方法解析xml特定格式的字符串

    在Java开发中,XML(可扩展标记语言)是一种常见的数据交换格式,用于存储和传输结构化数据。JDK(Java Development Kit)自1.6版本起就提供了处理...通过练习和实际应用,可以更好地理解和运用JDK提供的XML处理能力。

    XML文档转换成字符串

    当我们处理XML文档时,有时需要将其转换为字符串格式,以便于存储、传输或者进一步处理。标题和描述提及的"XML文档转换成字符串"就是这样一个需求。下面我们将详细探讨如何实现这个功能。 首先,我们要理解XML文档...

    mybatis Mapper.xml中传参多选 字符串形式逗号分隔 AND中拼接OR.rar

    标题和描述所提及的问题是关于如何在Mapper.xml文件中处理字符串形式的参数,这些参数由逗号分隔,并在`AND`语句中拼接`OR`子句来实现动态查询。这种场景在处理用户多选过滤条件时非常常见,比如在一个搜索框中,...

Global site tag (gtag.js) - Google Analytics