xml文件中的中包含怎么办?

kagetu_toki 2011-10-16 01:15:37
正常的<>不用转义就可以放到xml节点中
如<a><![CDATA[<b>abc</b>]]></a>
这样格式是正确的
但是如果b节点中也有<![CDATA[]]>该怎么办呢
如下面这样<a><![CDATA[<b><![CDATA[abc]]></b>]]></a>
就会是格式错误,有什么方法解决么?
难道只能用把><这些转成⁢一类的方法来解决吗
...全文
52535 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
benjumin 2012-10-17
  • 打赏
  • 举报
回复 1
在網路上有找到另一個方法

以"]]]]><![CDATA[>"替換原本的"]]>"內容

原文解說如下:
It basically closes the current CDATA section and opens a new one, deconstructing the "unwanted termination tag" into ]] and > and putting them in the separate sections.

"]]><![CDATA["可中斷原本的CDATA的註解,以樓主的情形來說,
可改成<a><![CDATA[<b><![]]><![CDATA[CDATA[abc]]]]><![CDATA[></b>]]></a>
雖然有點難辨識,但我試過的確可行!


參考來源https://github.com/symphonycms/symphony-2/pull/69
  • 打赏
  • 举报
回复
用js把数据内容编码一下再放数据库,取回来再解码不行么?你不会是直接拿到数据就放数据库里吧?
planet 2011-10-18
  • 打赏
  • 举报
回复
学习 回复内容太短了!
kagetu_toki 2011-10-18
  • 打赏
  • 举报
回复
其实主要是这样的
我前台通常是发一个查询参数到后台,然后后台根据参数查出数据后将数据打成xml格式返回
如:"a"表中的"a_a"字段里的数据是"abc""<>#$%"""(注意这个字段里的数据可以是html代码的,当然也会出现我上面说的那个<b><![CDATA[abc]]></b>)
然后返回前台得到的实际数据是xml格式字符串:
如下:<a><a_a><![CDATA[abc""<>#$%""]]></a_a></a>
为了方便,并没有把像引号和尖括号这样一类的特殊字符做转义处理,而是用CDATA这个方法来解决,然后现在遇到问题了,就是当字段中存在像CDATA这种xml字符串时,或者确切的说是有"]]>"时就会截断标签,那么按两位的说法来看就只能把数据中的>做转义处理了,如此以来拼xml返回前台时就不回出错,而转回来就只能在前台得到后用js来转回来。

或者说是我的数据库设计就有问题,不应该这样存数据。我还有好多页面的布局一类的html代码(如页头页尾)是直接放在xml文件里,然后js去读取写到html里凑成页面,呃,或者是读到xml类型数据再和xslt合并出页面。总之就是xml里的特殊字符实在让我头痛

感谢楼上两位的回复
孟子E章 2011-10-16
  • 打赏
  • 举报
回复
对,只能进行转换解决
安全的方法

<![CDATA[abc]]></b>]]>
存xmlencode之后的代码
手写 2011-10-16
  • 打赏
  • 举报
回复
CDATA(Character Data)里面,都是以数据形式存储的。
<a><![CDATA[<b><![CDATA[abc]]></b>]]></a>
CDATA里面就不要用CDATA了,没什么意义

87,910

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧