`

xml型字符串解析时存在& < >符号时的解决方案

xml 
阅读更多

问题产生:

       在接口调用得出一个xml型字符串,一直报错

The entityname must immediately follow the '&' in the entity reference

 

经查发现  xml的内容里存在有  &符号  而 通过dom4j读取时  会发生错误

 

在xml中 “&”“<”“>”这样的标签存放在内容里是不合法的,会经常出问题。

 

下面找到解决方法:实测   替换  &   是可行的。   

 

public void chartReplace(){
        String str2 = "<logentry revision='1'>" +
                "<msg>In this comment, I fixed a <bug>, and <added> file1&&file2.</msg>" +
                "</logentry>";
        System.out.println("original string: "+str2);
         
        //替换“&”:$1表示与(<msg>.*)的匹配子序列;$4表示与(.*</msg>)匹配的。
                     //&(?!amp;)表示匹配&而且后面不是amp;的字符串
        //"$1&amp;$3$4"得到的结果就是替换了<msg></msg>中的“&”为“&amp;”
        //由于每次只能替换掉一个“&”,所以循环执行替换,直到替换后与替换前的字符串相等。
        String str1 = "";
        while(!str2.equals(str1)){
            str1 = str2;
            str2 = str1.replaceAll("(<msg>.*)(&(?!amp;))(.*</msg>)", "$1&amp;$3");
        }
        System.out.println("firstly replace \"&\": "+str2);
         
        //替换“<”
        str1 = "";
        while(!str2.equals(str1)){
            str1 = str2;
            str2 = str1.replaceAll("(<msg>.*)(<)(.*</msg>)", "$1&lt;$3");
        }
        System.out.println("then replace \"<\": "+str2);
         
        //替换“<”
        str1 = "";
        while(!str2.equals(str1)){
            str1 = str2;
            str2 = str1.replaceAll("(<msg>.*)(>)(.*</msg>)", "$1&gt;$3");
        }
        System.out.println("finally replace \">\": "+str2);
    }

 

 

感谢

http://my.oschina.net/u/178218/blog/55293 

 
分享到:
评论

相关推荐

    C#编程经验技巧宝典

    85&lt;br&gt;&lt;br&gt;0130 复制字符串中指定的字符 85&lt;br&gt;&lt;br&gt;0131 巧截字符串的数字 86&lt;br&gt;&lt;br&gt;0132 如何存储变长字符串 86&lt;br&gt;&lt;br&gt;0133 在进行字符串比较时忽略大小写 87&lt;br&gt;&lt;br&gt;0134 如何去除字符串尾空格 87&lt;br&gt;...

    Linux gcc C语言解析XML文件,纯原生源代码, 无需安装三方库!

    解析XML元素和属性,需要识别 `&lt;` 和 `&gt;` 符号,通过查找 `&gt;` 来确定元素的结束。对于属性,通常在 `=` 后面有一个值,可能需要解析引号包围的字符串。 然而,这种方法较为基础且不适用于复杂的XML文档,因为它没有...

    XML实现多语言应用程序

    在这里,`&lt;string&gt;`元素表示一个文本字符串,`name`属性用于唯一标识该字符串,而元素的文本内容是该字符串在特定语言下的值。 为了实现多语言切换,应用程序需要能够动态加载相应的XML资源文件。这可以通过编程...

    MathML2String_.NET_demo.zip

    本项目“MathML2String_.NET_demo.zip”提供了一个实用的解决方案,包含两个核心类:`MathToString`和`ParseML`,分别用于MathML字符串的准备和解析。这两个类的设计体现了面向对象编程的原则,通过明确职责分工,...

    一种基于XML和正则表达式的简单验证框架.pdf

    "一种基于XML和正则表达式的简单验证框架" 本文介绍了一种基于XML和正则表达式的简单验证框架,该框架可以用于Web开发中的表单验证。...本框架提供了一种简单灵活的验证解决方案,可以满足Web开发中的各种验证需求。

    JAVA常见中文问题的解决方案.txt

    从数据库查询结果集中获取的字符串数据可能会出现乱码,这时可以通过转换编码的方式来解决问题: ```java String desc = rs.getString("desc"); desc = new String(desc.getBytes("ISO-8859-1"), "GB2312"); ``` ...

    xml期末复习题

    ### XML与HTML的区别 ...总结而言,XML及其相关技术(如Schema、XLink、XSL)为数据的存储、传输、描述和展现提供了强大而灵活的解决方案,相较于传统的HTML,XML在数据管理方面展现出更多的优势和潜力。

    栈的应用-平衡符号

    通过这种方式,我们能有效地检测字符串中的括号是否平衡,这对于编译器解析表达式、XML或HTML文档的解析等场景至关重要。在C语言编程中,可以使用`#include &lt;stdio.h&gt;`和`#include &lt;stdlib.h&gt;`库来实现栈的基本操作...

    struts2中文乱码

    ### Struts2中文乱码问题解析与解决方案 #### 一、引言 在Web开发过程中,尤其是使用Struts2框架时,中文字符的正确显示是一个常见的挑战。本篇文章将详细介绍Struts2中出现中文乱码的原因及解决方案,帮助开发者更...

    velocity Demo

    4. **生成输出**:合并后,你会得到一个字符串,这个字符串就是根据模板和上下文生成的最终内容。 ** Velocity 示例 ** 在"velocityDemo"这个压缩包中,很可能包含了演示如何使用Velocity的基本示例。通常,一个...

    语言转换工具LanguageTool

    值得注意的是,尽管LanguageTool提供了一种高效的解决方案,但在实际应用中,还需要考虑其他本地化因素,比如日期和时间格式、货币符号、度量单位等。此外,为了确保最佳用户体验,还需要遵循各地区的文化习惯和规范...

    jsp中文问题解决方案(完整版)

    【标题】:深入解析JSP中文问题解决方案 【描述】:在Java应用程序开发中,处理中文乱码问题是一项常见的挑战,特别是在使用非Unicode编码如GB2312(包括GBK简体和Big5繁体)的环境中。正确展示中文和在数据库中...

    java项目应用中自定义sql在ibaits框架中的使用.docx

    在实际开发中,当遇到类似问题时,不仅需要检查SQL语法的正确性,还需要关注框架自身的特性和配置,以便找到合适的解决方案。通过合理的缓存管理和配置,可以确保自定义SQL的正确执行,同时保持系统的高效运行。

    spring mvc 项目错误,和一些配置

    根据提供的文档信息,我们可以归纳总结出一系列与Spring MVC框架相关的常见问题及解决方案。这些问题主要集中在配置错误、依赖缺失以及常见的异常处理等方面。 ### Spring MVC 项目常见错误与配置 #### 1. Java....

    中英文字符转换解决乱码问题

    在给定的部分代码示例中,我们看到一个名为`Base64`的类,该类提供了将字节数组转换为Base64字符串的方法。Base64是一种广泛使用的二进制到文本的编码方案,用于安全地传输二进制数据,特别是在电子邮件、URL和其他...

    Spring Batch读取txt文件并写入数据库的方法教程

    // 在这里处理数据,例如去除特殊符号,截取过长的字符串等 user.setUsername(user.getUsername().trim()); if (user.getInterests() != null) { user.setInterests(user.getInterests().stream().map(String::...

    Velocity 用户指南

    有时需要在 Velocity 模板中输出类似 `$variable` 的字符串,而不希望 Velocity 解析它。可以使用转义字符来达到这一目的: ```html \$ ``` 这会输出一个美元符号,而不是触发变量解析。 #### 9. CASE ...

    freemark学习文档

    - **`interpret`**:解析一个字符串为一个表达式并计算其结果。 - **`is_macro`**:判断是否是一个宏。 - **`matches`**:用于字符串匹配。 - **`sort`**:对集合进行排序。 - **`html`**:将内容转换为HTML安全的...

    java 写的转pdf代码,支持表格内容的中文换行

    在处理中文换行时,PDF生成器需要正确地识别和处理中文字符集,如UTF-8,并确保在遇到长句子时,中文字符可以在表格内适当地换行,而不破坏表格的结构。这通常需要对字体、排版规则以及文本渲染有深入的理解。 CSS...

    Velocity模板解析

    这个技术广泛应用于Web开发,尤其是在MVC(Model-View-Controller)框架中,作为视图层的解决方案。Velocity模板的主要目标是将业务逻辑与显示逻辑分离,让开发者专注于内容的展示,而不用关心页面布局和设计。 ...

Global site tag (gtag.js) - Google Analytics