`
langyu
  • 浏览: 889234 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

XML中特殊字符过滤(含Java代码)

阅读更多
        在XML规范中,不支持ASCII前31个字符中的相当多控制符号,所以在组装XML时需过滤这些特殊字符,以免引起解析问题。对于这些特殊字符,常见的异常如:
引用
Character reference "&#12" is an invalid XML character.

这里的"&#12表示是ASCII码的第几个控制字符


        同时,'&'(实体引用的开始)和'<'(控制符的开始)作为XML的标准控制字符必须不能出现在正常内容中,如果出现的话,需要转义。XML提供CDATA结构段用来指示XML解析器不要对CDATA段中的数据做处理。但如果在CDATA段中包含CDATA段的关闭符']]>'的话,还是会出现解析问题。

     正常CDATA段示例
引用
CDStart    ::=   '<![CDATA['
CData       ::=   (Char* - (Char* ']]>' Char*))
CDEnd     ::=   ']]>'


        用类似的代码解决这类烦人问题

/**
	 * @see http://www.w3.org/TR/2004/REC-xml-20040204/#charsets
	 * 		All supported characters
	 * @param data 
	 * 			content in each field 
	 * @return 
	 * 			regular content is filtered from illegal XML char
	 */
	public static String checkXmlChar(String data) {
		StringBuffer appender = new StringBuffer("");
		
	    if (StringUtils.isNotBlank(data)) {
	    	appender = new StringBuffer(data.length());
	    	
	    	for (int i = 0; i < data.length(); i++) {
		        char ch = data.charAt(i);
		        if ((ch == 0x9) || (ch == 0xA) || (ch == 0xD)
		                || ((ch >= 0x20) && (ch <= 0xD7FF))
		                || ((ch >= 0xE000) && (ch <= 0xFFFD))
		                || ((ch >= 0x10000) && (ch <= 0x10FFFF)))
		        	appender.append(ch);
		    }
	    }
	    
	    String result = appender.toString();
	    
	    return result.replaceAll("]]>", "");
	}

3
0
分享到:
评论

相关推荐

    Java过滤器,字符过滤,标签过滤

    在Java中,可以使用诸如OWASP Java Encoder库这样的工具来帮助安全地处理和编码用户输入。 字符编码转换是另一个关键点。在Web应用中,不同的系统可能使用不同的字符编码,如UTF-8、GBK等。如果不正确地处理编码,...

    JAVA过滤器标准代码

    ### JAVA过滤器标准代码解析与应用 在Java Web开发中,过滤器(Filter)是一种用于拦截请求和响应的重要机制,可以实现对用户请求的预处理和后处理,以及对响应的处理。本文将深入解析“JAVA过滤器标准代码”,探讨...

    java字符过滤器,过滤器

    你可以创建自己的过滤器类,继承这两个类,并重写其方法来实现特定的字符过滤或转换功能,如检查或替换特殊字符,解决乱码问题。 在实际应用中,如果遇到乱码问题,首先需要确定原始数据的正确编码格式,然后在读取...

    java 请求参数过滤拦截

    这里的“java请求参数过滤拦截”主要是指在接口接收到用户输入的数据时,通过过滤器(Filter)对参数进行检查,防止恶意攻击者利用特殊字符执行SQL注入、跨站脚本攻击(XSS)等危害。下面我们将详细探讨这一主题。 ...

    sql注入Java过滤器

    配置在web.xml中,可以防止SQL注入,可以自己定义一些需要过滤的特殊字符

    过滤器过滤用户输入的非法字符

    本文将深入探讨标题中的两个关键类:`XssFilter.java` 和 `XssHttpServletRequestWrapper.java`,以及它们在过滤非法字符中的作用。 首先,`XssFilter.java` 是一个实现了Servlet过滤器接口(javax.servlet.Filter...

    jsp字符过滤器

    字符过滤器主要用于防止恶意用户通过提交特殊字符或者执行SQL注入、跨站脚本攻击(XSS)等行为,保护服务器免受攻击。 一、JSP过滤器基础 JSP过滤器是基于Servlet规范的Filter接口实现的,它可以拦截请求,对请求和...

    SQL注入过滤 (Java版)

    总之,Java中的SQL注入过滤器是保护应用程序免受SQL注入攻击的重要手段之一。通过在请求处理前对参数进行检查和清理,可以有效地降低被注入的风险。同时,结合其他安全措施,如使用预编译的SQL语句,可以进一步增强...

    彻底根治Spring @ResponseBody JavaScript HTML特殊字符

    在开发Web应用时,我们经常会遇到一个问题:当使用Spring MVC的`@ResponseBody`注解将后端处理结果直接转化为HTTP响应体时,如果这个结果中包含HTML特殊字符,如尖角号、引号、按位与符号等,浏览器可能会误解析,...

    中文字符过滤器

    本篇文章将深入探讨中文字符过滤器的工作原理、实现方式以及如何配置,以确保在Java Web应用中正确处理中文参数。 首先,我们要理解乱码问题的来源。当客户端(如浏览器)发送请求到服务器时,如果请求参数的编码...

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

    例如,如果用户选择的标签以逗号分隔的字符串"tag1,tag2,tag3"传入,我们可以在Java代码中将其分割并存入List。 接下来,我们将焦点转到Mapper.xml文件。在SQL语句中,我们可以使用`&lt;foreach&gt;`标签来遍历集合中的...

    java防sql注入攻击过滤器

    本篇文章将深入探讨如何在Java中实现一个防SQL注入的过滤器,以及它的重要性。 SQL注入的原理是利用应用程序处理用户输入数据时的不足,将恶意SQL语句嵌入到原本合法的查询中。例如,如果一个登录接口的用户名字段...

    java字符编码监听器

    在Java代码中,我们可以自定义过滤器类继承`javax.servlet.Filter`,然后在`doFilter`方法中设置请求的字符编码。例如: ```java public void doFilter(ServletRequest request, ServletResponse response, ...

    InputFilterEditTextDEmo 过滤特殊字符,空格,emoji的EditText

    要在项目中使用`InputFilterEditTextDemo`,开发者需要将这个自定义控件添加到布局XML文件中,并在代码中引用它,设置相应的过滤规则和长度限制。 通过以上分析,我们可以看出`InputFilterEditTextDemo`项目旨在...

    filterdemo代码

    `filterdemo代码`涉及到的是如何使用Java编程语言中的过滤器(Filter)技术来保护Web应用程序,防止恶意用户通过输入特殊字符来执行非法操作或者破坏系统。过滤器是Java Servlet API提供的一种机制,允许我们在请求...

    字符编码过滤器

    在Java Web开发中,字符编码过滤器(Character Encoding Filter)起着至关重要的作用。它确保了请求和响应数据在处理过程中使用一致的字符编码,从而避免乱码问题。本篇文章将详细探讨Java过滤器(Filter)的概念,...

    Android开发之EditText字符串过滤器InputFilter

    如果需要过滤特殊字符,可以创建一个包含合法字符的集合,然后检查输入字符是否在集合内。 4. **组合多个InputFilter**:有时我们需要同时应用多种过滤规则,例如限制长度和过滤特殊字符。在这种情况下,可以创建一...

    java中文过滤器

    在Java Web开发中,"java中文过滤器"是一种常见的技术,用于处理B/S(Browser/Server)架构下中文字符编码的问题。在B/S系统中,数据通常通过HTTP协议在网络间传输,而HTTP协议默认并不规定字符编码,这可能导致在...

    字符编码过滤器 字符编码转换 post字符转换

    "encoding-filter.jar"可能是一个实现了字符编码过滤器功能的Java类库,它可以被添加到J2EE应用中,自动处理字符编码转换。而"使用方法.txt"文件则可能提供了关于如何配置和使用这个过滤器的详细步骤和示例代码,以...

    java 中如何使用filter过滤器

    本文将详细介绍如何在Java中使用Filter过滤器,以及如何配置相关的配置文件,让你一目了然。 ### 1. Filter接口与生命周期 Filter是Servlet API中的一个接口,位于`javax.servlet`包下。它定义了三个关键方法: -...

Global site tag (gtag.js) - Google Analytics