解决<![CDATA[xml]]>不能嵌套问题!
2014-10-20 17:26
656 查看
String msgXml = xml; String str = "<![CDATA[msgXml]]>";
如果xml里面还含有CDATA,xml解析str肯定会出错,因为CDATA是不能嵌套的。
我的解决方法就是把str 分成三部分,分别用3个CDATA包装,这样就不存在嵌套问题了,
下面是实现代码:
/** * 字符串帮助类 * @author * */ public class StringHelper { /** * <?xml version="1.0" encoding="UTF-8"?> <xxx Version="2.0" Type="xxxx" ToType = "3" ToID ="2384610" WSID="1966731" SoftVersion="1.0.1"> <xxxxx Version="2.0" SenderDevice="MP" RecieverDevice="" SenderID="49"> <Text Time="2014-09-29 10:58:05"><Content><![CDATA[fff]]></Content></Text> <Face Time="2014-09-29 10:58:05"><Content><![CDATA[emoji017]]></Content></Face> <Face Time="2014-09-29 10:58:05"><Content><![CDATA[emoji010]]></Content></Face> <Face Time="2014-09-29 10:58:05"><Content><![CDATA[emoji018]]></Content></Face> <Face Time="2014-09-29 10:58:05"><Content><![CDATA[emoji018]]></Content></Face> </xxxxx></xxx> */ /** * 格式化聊天消息xml -----]]><![CDATA[000000000003]]><![CDATA[----- * (CDATA不能嵌套,所以要格式化。用于保存聊天消息) * * @param xml * @return */ public static String formatMsgXml(String xml){ //首+:<Content>]]> //尾+:<![CDATA[</Content> String result = ""; String[] list = xml.split("<Content>"); for (int i = 0; i < list.length; i++) { if(i !=0){ if(i == 1){//首 list[i] = "<Content>]]>"+list[i]; }else{ list[i] = "<Content>"+list[i]; } if(i == (list.length-1)){//尾 String[] list2 = list[i].split("</Content>"); list2[1] = "<![CDATA[</Content>"+list2[1]; String end = ""; for (int j = 0; j < list2.length; j++) { end += list2[j]; } list[i] = end; } } System.out.println(list[i]); System.out.println("-------------------\r\n"); result += list[i]; } // System.out.println(result); return result; } }
相关文章推荐
- 处理内容有&特殊字符thinkphp返回xml无法解析的问题<![CDATA[xxx]]>
- js给<object>视频赋值 延迟加载,解决不能修改的html对象的问题 .
- 解决properties-maven-plugin不能读取<configuration>的问题
- XML<![CDATA[ ]]>嵌套
- Android中launcherMode="singleTask"详解<解决home键返回不能出现原界面问题>
- 解决<s:file>上传文件大小和 不能获取文件问题
- display不能解决<jsp:include />的问题,jsp异步加载另外一个jsp页面
- [解决问题][不能更新eclipse]错误提示:Error retrieving "feature.xml". [error in opening zip file]
- List<> 转换为Dataset的C#代码实现 解决Nullable问题
- xml CDATA区、特殊字符:<= 小于等于、>= 大于等于
- 解决cxf+spring发布的webservice缺少<wsdl:types>和<wsdl:message>标签的问题
- jQuery不能使用unbind解除超链接<a>的click事件的解决方法
- 解决 spring mvc 3.0 结合 hibernate3.2 使用<tx:annotation-driven>声明式事务无法提交的问题
- 待解决问题:验证视图状态 MAC 失败。如果此应用程序由网络场或群集承载,请确保 <machineKey> 配置指定了相同的 validationKey 和验证算法。不能在群集中使用 AutoGenerate
- 关于<input type="text">不能显示空格的问题
- Note on <Zend Framework - A Beginner's Guide> - 02 ZF原理;继续解决第二章的问题
- 关于<rich:popupPanel>中的<h:inputText>不能正确修改后台的值 的问题
- hadoop "File /user/<user>/input/conf/slaves could only be replicated to 0 nodes, instead of 1"问题及解决办
- 如何解决服务器CPU使用率过高的问题<二>
- asp.net中,在客户端,加入<%=....%>代码时出现的问题解决方法