以文本方式查看主题

-  计算机科学论坛  (http://bbs.xml.org.cn/index.asp)
--  『 XML基础 』  (http://bbs.xml.org.cn/list.asp?boardid=1)
----  请问我的这个代码怎么老出问题,帮我看看,谢谢  (http://bbs.xml.org.cn/dispbbs.asp?boardid=1&rootid=&id=62524)


--  作者:nbdxkfq
--  发布时间:5/13/2008 9:54:00 AM

--  请问我的这个代码怎么老出问题,帮我看看,谢谢
<%
 Dim newnode
                Set xmldoc =Server.CreateObject("Microsoft.XMLDOM")
 xmldoc.load(Server.MapPath("index.xml"))
 set xmlNode=xmldoc.documentElement
 nodelength=xmlNode.childNodes.length-1
                xmldoc.async=false
 for i = 0 to nodelength
 Set newnode=xmlNode.childNodes.item(i)
 xmlNode.removeChild(newnode)
 next
 xmldoc.save(Server.MapPath("index.xml"))
%>
这个在浏览器上总是提示我:无效的过程调用或参数: 'xmlNode.removeChild'
我试着把Set newnode=xmlNode.childNodes.item(i)里面的i换成0,结果可以用,没问题,
我在for语句后面加了一个response.write(i),检查i的传递,结果是正确了,请问怎么办,谢谢

顺便问问用什么样子的语句可以做修改xml里面的数据用,谢谢,我现在想的是把语句去掉,然后在添加上一条,有没有不用去掉,直接可以修改的?谢谢


--  作者:Qr
--  发布时间:5/13/2008 2:22:00 PM

--  
假设nodelength=10,因为节点删除后并不存在一个空节点,而是后续节点补上来,而nodelength不会改变,它是程序执行删除节点命令前就定义了的。当程序删除了5个节点并再次循环后,i=6,而此时DOM对象中才有5个节点,节点xmlNode.childNodes.item(6)当然就不存在,错误就理所当然了。
删除结果:0,2,4,6,8节点被删除,1,3,5,7,9没有被删除

而xmlNode.childNodes.item(0)始终指向DOM对象中的第一个节点,与i的变化无关,当然没问题了。此时的i,只是告诉程序执行10次循环。
删除结果:全部被删除——正确的方法和结果

重设节点值如果不想用替换的方法,可以考虑通过nodeVlaue="节点值"的文件,具体看DOM手册。


--  作者:zh2208
--  发布时间:5/13/2008 5:48:00 PM

--  
解释的挺详细。。辛苦了。。
W 3 C h i n a ( since 2003 ) 旗 下 站 点
苏ICP备05006046号《全国人大常委会关于维护互联网安全的决定》《计算机信息网络国际联网安全保护管理办法》
78.125ms