xml中的CDATA赋值问题

ego 2007-05-25 01:39:49
存在这样的XML文件
<?xml version="1.0" encoding="gb2312"?>
<root>
<stuMemo id="2"><![CDATA[学生简历内容]]</stuMemo>
……
</root>
现在需要更改“学生简历内容”。我看到的办法是在删除要更改CDATA内容的节点后,再新创建一个节点,然后用
Set NodeCDATA = XmlDoc.createCDATASection(strJianLi)
Node.appendChild(NodetCDATA)
这样的方式追加一个简历。

我不想采用那种方式,想采用直接更改的方式。
曾用Node.text = "<![CDATA["& strJianLi &"]]"这样的办法,但是改完后,尖括号会被转义字符所替换。所以更改结果在正常调用时会有问题。

现在除了以上方法外,还有什么方法可以直接修改CDATA的值的?
...全文
1201 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
hookee 2007-05-27
  • 打赏
  • 举报
回复
这样做特殊字符还是会保留的,并不会被转义,因为是直接取得CDATA,而不是其父亲,完整的测试代码可以看下:

Set oX = CreateObject("Msxml2.DOMDocument")
With oX
.async = False
.LoadXML("<?xml version='1.0'?><root><a><![CDATA[学生简历内容]]></a></root>")
If .parseError.errorCode <> 0 Then
Set oX = Nothing
Response.Write .parseError.reason
Else
Set oNode = .selectSingleNode("/root/a/text()")
oNode.text = "xxx<b>xx&xx</b>" '这里有特殊字符
Response.Write .xml
End If
End With
Set oX = Nothing
ego 2007-05-27
  • 打赏
  • 举报
回复
我的意思是要修改CDATA类型的数据。用Node.text直接赋值当然可以,但是所赋值的信息中的特殊字符会被转义。我要求修改的数据要保持原样不被转义,因此必须用CDATA方式包含修改的内容。

已经找到临时的解决办法。先用Node.text=""把原有数据清空,然后再用Node.appendChild(NodetCDATA)追加。

此贴再等一两天,若仍无好的答案,则只好结贴了。
hookee 2007-05-26
  • 打赏
  • 举报
回复
XPath的例子
Set oNode = oDoc.selectSingleNode("/root/stuMemo[@id=2]/text()")
oNode.text = "xxxxx"
这样也可以直接改
hookee 2007-05-26
  • 打赏
  • 举报
回复
我的方法就是直接修改呀,不需要appendNode()的,不是这个意思吗?
oNode是已经取得<stuMemo>,oNode.childNodes(0)就是cdata了,cdNode.text = "xxxxxx"就直接修改cdata的值了.

你的意思是不是用xpath直接取得CDATA?
ego 2007-05-26
  • 打赏
  • 举报
回复
还有人知道吗
ego 2007-05-25
  • 打赏
  • 举报
回复
为了避免大家浪费时间白白回贴,所以我在尽量清晰的描述我的问题了。楼上的似乎没看懂我的问题所在。
hookee 2007-05-25
  • 打赏
  • 举报
回复
Set cdNode = oNode.childNodes(0)
cdNode.text = "xxxxxx"

28,391

社区成员

发帖
与我相关
我的任务
社区描述
ASP即Active Server Pages,是Microsoft公司开发的服务器端脚本环境。
社区管理员
  • ASP
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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