`
yt
  • 浏览: 17151 次
  • 性别: 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#语言

    PB解析XML字符串 把XML 变为数据窗口

    在学习和使用这些源码时,需要注意理解每一步的目的和实现方式,以便在自己的项目中灵活应用。 标签“PB XML”表明这是关于PowerBuilder处理XML数据的主题,如果你需要深入学习,可以查阅PowerBuilder的相关文档,...

    将string类型xml字符串转为json字符串

    需要注意的是,XML和JSON在结构上存在一些差异。XML支持命名空间、属性和自闭合标签,而JSON不支持这些特性。因此,在转换时,一些XML特定的元素可能无法直接映射到JSON。例如,XML属性需要被转换为JSON中的子对象,...

    使用javascript解析xml文件或xml格式字符串中文WORD版

    资源名称:使用Javascript解析xml文件或xml格式字符串 中文WORD版   内容简介: 本文档主要讲述的是使用Javascript解析xml文件或xml格式字符串;javascript中,不论是解析xml文件,...

    纯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内容时,养成检查并转义非法字符的习惯,能够避免许多不必要的麻烦,提升开发效率和数据的...

    c#生成XML字符串

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

    xml中的特殊字符替换

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

    C++解析xml文档或者xml字符串方法

    在C++中,解析XML文档或XML字符串是常见的任务,特别是在需要与JavaScript或其他不支持指针的语言交互时。本文将详细介绍如何在Visual Studio 2010环境下利用Microsoft的MSXML库来处理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的生成。 ...

    字符串转换成XML格式工具XmlNotepad-v2.5.rar

    为了解决这一问题,我们引入了一款高效的工具——XmlNotepad v2.5,它能快速将大数据量的字符串转换成XML格式,大大提升了工作效率。 XmlNotepad是由Microsoft开发的一款轻量级的XML编辑器,它具有直观的用户界面和...

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

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

    Struts开发Wap应用(word)

    在使用Struts开发WAP应用时,有几个关键知识点需要掌握: 1. **WML语言**:WML(Wireless Markup Language)是专为小屏幕和低带宽的无线设备设计的标记语言,类似于HTML。开发者需要熟悉WML语法,包括卡片(card)...

Global site tag (gtag.js) - Google Analytics