问题产生:
在接口调用得出一个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&$3$4"得到的结果就是替换了<msg></msg>中的“&”为“&”
//由于每次只能替换掉一个“&”,所以循环执行替换,直到替换后与替换前的字符串相等。
String str1 = "" ;
while (!str2.equals(str1)){
str1 = str2;
str2 = str1.replaceAll( "(<msg>.*)(&(?!amp;))(.*</msg>)" , "$1&$3" );
}
System.out.println( "firstly replace \"&\": " +str2);
//替换“<”
str1 = "" ;
while (!str2.equals(str1)){
str1 = str2;
str2 = str1.replaceAll( "(<msg>.*)(<)(.*</msg>)" , "$1<$3" );
}
System.out.println( "then replace \"<\": " +str2);
//替换“<”
str1 = "" ;
while (!str2.equals(str1)){
str1 = str2;
str2 = str1.replaceAll( "(<msg>.*)(>)(.*</msg>)" , "$1>$3" );
}
System.out.println( "finally replace \">\": " +str2);
}
|
感谢
http://my.oschina.net/u/178218/blog/55293
相关推荐
85<br><br>0130 复制字符串中指定的字符 85<br><br>0131 巧截字符串的数字 86<br><br>0132 如何存储变长字符串 86<br><br>0133 在进行字符串比较时忽略大小写 87<br><br>0134 如何去除字符串尾空格 87<br>...
解析XML元素和属性,需要识别 `<` 和 `>` 符号,通过查找 `>` 来确定元素的结束。对于属性,通常在 `=` 后面有一个值,可能需要解析引号包围的字符串。 然而,这种方法较为基础且不适用于复杂的XML文档,因为它没有...
在这里,`<string>`元素表示一个文本字符串,`name`属性用于唯一标识该字符串,而元素的文本内容是该字符串在特定语言下的值。 为了实现多语言切换,应用程序需要能够动态加载相应的XML资源文件。这可以通过编程...
本项目“MathML2String_.NET_demo.zip”提供了一个实用的解决方案,包含两个核心类:`MathToString`和`ParseML`,分别用于MathML字符串的准备和解析。这两个类的设计体现了面向对象编程的原则,通过明确职责分工,...
"一种基于XML和正则表达式的简单验证框架" 本文介绍了一种基于XML和正则表达式的简单验证框架,该框架可以用于Web开发中的表单验证。...本框架提供了一种简单灵活的验证解决方案,可以满足Web开发中的各种验证需求。
从数据库查询结果集中获取的字符串数据可能会出现乱码,这时可以通过转换编码的方式来解决问题: ```java String desc = rs.getString("desc"); desc = new String(desc.getBytes("ISO-8859-1"), "GB2312"); ``` ...
### XML与HTML的区别 ...总结而言,XML及其相关技术(如Schema、XLink、XSL)为数据的存储、传输、描述和展现提供了强大而灵活的解决方案,相较于传统的HTML,XML在数据管理方面展现出更多的优势和潜力。
通过这种方式,我们能有效地检测字符串中的括号是否平衡,这对于编译器解析表达式、XML或HTML文档的解析等场景至关重要。在C语言编程中,可以使用`#include <stdio.h>`和`#include <stdlib.h>`库来实现栈的基本操作...
### Struts2中文乱码问题解析与解决方案 #### 一、引言 在Web开发过程中,尤其是使用Struts2框架时,中文字符的正确显示是一个常见的挑战。本篇文章将详细介绍Struts2中出现中文乱码的原因及解决方案,帮助开发者更...
4. **生成输出**:合并后,你会得到一个字符串,这个字符串就是根据模板和上下文生成的最终内容。 ** Velocity 示例 ** 在"velocityDemo"这个压缩包中,很可能包含了演示如何使用Velocity的基本示例。通常,一个...
值得注意的是,尽管LanguageTool提供了一种高效的解决方案,但在实际应用中,还需要考虑其他本地化因素,比如日期和时间格式、货币符号、度量单位等。此外,为了确保最佳用户体验,还需要遵循各地区的文化习惯和规范...
【标题】:深入解析JSP中文问题解决方案 【描述】:在Java应用程序开发中,处理中文乱码问题是一项常见的挑战,特别是在使用非Unicode编码如GB2312(包括GBK简体和Big5繁体)的环境中。正确展示中文和在数据库中...
在实际开发中,当遇到类似问题时,不仅需要检查SQL语法的正确性,还需要关注框架自身的特性和配置,以便找到合适的解决方案。通过合理的缓存管理和配置,可以确保自定义SQL的正确执行,同时保持系统的高效运行。
根据提供的文档信息,我们可以归纳总结出一系列与Spring MVC框架相关的常见问题及解决方案。这些问题主要集中在配置错误、依赖缺失以及常见的异常处理等方面。 ### Spring MVC 项目常见错误与配置 #### 1. Java....
在给定的部分代码示例中,我们看到一个名为`Base64`的类,该类提供了将字节数组转换为Base64字符串的方法。Base64是一种广泛使用的二进制到文本的编码方案,用于安全地传输二进制数据,特别是在电子邮件、URL和其他...
// 在这里处理数据,例如去除特殊符号,截取过长的字符串等 user.setUsername(user.getUsername().trim()); if (user.getInterests() != null) { user.setInterests(user.getInterests().stream().map(String::...
有时需要在 Velocity 模板中输出类似 `$variable` 的字符串,而不希望 Velocity 解析它。可以使用转义字符来达到这一目的: ```html \$ ``` 这会输出一个美元符号,而不是触发变量解析。 #### 9. CASE ...
- **`interpret`**:解析一个字符串为一个表达式并计算其结果。 - **`is_macro`**:判断是否是一个宏。 - **`matches`**:用于字符串匹配。 - **`sort`**:对集合进行排序。 - **`html`**:将内容转换为HTML安全的...
在处理中文换行时,PDF生成器需要正确地识别和处理中文字符集,如UTF-8,并确保在遇到长句子时,中文字符可以在表格内适当地换行,而不破坏表格的结构。这通常需要对字体、排版规则以及文本渲染有深入的理解。 CSS...
这个技术广泛应用于Web开发,尤其是在MVC(Model-View-Controller)框架中,作为视图层的解决方案。Velocity模板的主要目标是将业务逻辑与显示逻辑分离,让开发者专注于内容的展示,而不用关心页面布局和设计。 ...