出于某种原因,有人更改了我需要的webService xml响应。所以现在,我需要获取的信息是在CDATA标签内 事情是所有“<”和“>”字符已替换为“<”和“>”。
示例如何:
<MapAAAResult><!CDATA[<map>http://tstgis.xxxxxxx.xxx/gis_n/WebService1/Users/Image/xxxxxbinkor4.png|vialcap:2</map>
<nbr>234</nbr>
<nbrProcess>97` ....
这就是我收到它的方式:
<MapAAAResult>
<mapa>http://tstgis.xxxxxxx.xxx/gis_n/WebService1/Users/Image/xxxxxxxxbi542m4.png|vialcap:1</map>
<nbr>234</nbr>
<nbrProcess>97 .....
如何将信息恢复原状?更确切地说,我如何将该信息转换回xml?
有什么想法吗?
谢谢!
答案 0 :(得分:0)
可能与角色逃避问题有关:
HTML inside XML CDATA being converted with < and > brackets
像“&lt;”这样的字符,“&gt;”,“&amp;”在XML元素中是非法的,并且可以通过CDATA或字符替换来逃避这些。看起来webService在整个过程中的某个地方开启了他们的架构。
我遇到了类似的问题,我必须解析转义的xml。获取xml的快速解决方案是使用replaceAll():
String data = "<MapAAAResult>"
+ "<map>http://tstgis.xxxxxxx.xxx/gis_n/WebService1/Users/Image/xxxxxxxxbi542m4.png|vialcap:1</map><nbr>234</nbr>"
+ "<nbrProcess>97";
data = data.replaceAll("<","<");
data = data.replaceAll(">", ">");
data = data.replaceAll("&","&");
System.out.println(data);
你会回来的:
<MapAAAResult><map>http://tstgis.xxxxxxx.xxx/gis_n/WebService1/Users/Image/xxxxxxxxbi542m4.png|vialcap:1</map><nbr>234</nbr><nbrProcess>97...
在第一个CDATA字段中嵌入的CDATA标记会变得更复杂,并且xml解析可能会与结尾“]]&gt;”混淆“如:
<xml><![CDATA[ <tag><![CDATA[data]]></tag> ]]></xml>
因此,使用< > &
转义嵌入数据更具弹性,但可能会引入不必要的处理。另请注意:某些解析器或xml读取器可以识别转义字符。
其他一些相关主题: