照书的做,怎么不了?

hmbory 2002-03-07 09:54:10
dim name,address
name=trim(request("name"))
address=trim(request("address"))
if name<>"" then
addxml name,address
end if
function addxml(name,address)
dim temp,objxml1,objxml2,objroot,fso,newnode,currentnode,sourcefile,objfile
addxml=0
sourcefile=request.servervariables("APPL_PHYSICAL_PATH") & "\temp.xml"
temp=temp & "<INFORMATION><NAME>"+name+"</NAME>"
temp=temp & "<ADDRESS>"+address+"</ADDRESS></INFORMATION>"
set fso=server.createobject("scripting.filesystemobject")
set objxml1=server.createobject("Microsoft.XMLDOM")
set objxml2=server.createobject("Microsoft.XMLDOM")
objxml1.ValidateOnParse=True
If fso.fileExists(sourcefile) Then
'新建xml文件
set objfile=fso.createtextfile(sourcefile,True)
objfile.close
end If
objxml1.Load(sourcefile)
set objroot=objxml1.documentElement
'如果文件不能被加载,则退出
if not isobject(objroot) then
response.write "no file loaded"
exit function
end if
objxml2.loadXML(temp)
set newnode=objxml2.documentElement
set currentnode=objroot.appendChild(newnode)
objxml1.save(sourcefile)
set objxml1=nothing
set objxml2=nothing
addxml=1
end function

提示我set currentnode=objroot.appendChild(newnode)这一行出错?大伙,这哪里错了!谢过
...全文
33 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
老翔 2002-03-07
  • 打赏
  • 举报
回复
实际逻辑错误在这里
'文件存在,将文件重建,那么那个sourcefile里面完全是一片空白,连起码的根元素都没有!当然set objroot=objxml1.documentElement后,objroot将是空值。
那么objroot.appendChild(newnode)当然要出错呀!

If fso.fileExists(sourcefile) Then
'新建xml文件
set objfile=fso.createtextfile(sourcefile,True)
objfile.close
end If

objxml1.Load(sourcefile)
set objroot=objxml1.documentElement
老翔 2002-03-07
  • 打赏
  • 举报
回复
好,我试下
hmbory 2002-03-07
  • 打赏
  • 举报
回复
还是一样!!要不你试一下!!
其他的方法都好好的!真是气人!
老翔 2002-03-07
  • 打赏
  • 举报
回复
set currentnode=objroot.appendChild(newnode)

将这句直接改成
objroot.appendChild newnode
hmbory 2002-03-07
  • 打赏
  • 举报
回复
还是不行!!!哎!!!就试这个试了一早上!!!
《ASP与XML高级编程》怎么这么多错误呀!!

很多例子都是错的!!!
老翔 2002-03-07
  • 打赏
  • 举报
回复
难道是objxml1的objroot,不能接收objxml2的newnode嘛?

这个我没有试过!你要不然统一用一个objxml1看看
hmbory 2002-03-07
  • 打赏
  • 举报
回复
Microsoft VBScript 运行时错误 (0x800A01A8)
/temp.asp, 第 55 行
hmbory 2002-03-07
  • 打赏
  • 举报
回复
还是一样提示set currentnode=objroot.appendChild(newnode)出错!!
老翔 2002-03-07
  • 打赏
  • 举报
回复
在set currentnode=objroot.appendChild(newnode)之前加两句
set newnode = objxml2.createNode(1,"VIDEOS","");
newnode.text = "test" '不要中文,试下

去掉set newnode=objxml2.documentElement
hmbory 2002-03-07
  • 打赏
  • 举报
回复
对不起,是提示我set currentnode=objroot.appendChild(newnode)出错!

怎么一碰上appendchild方法就出错!!
hmbory 2002-03-07
  • 打赏
  • 举报
回复
提示我newnode = objxml2.createNode(1, "VIDEOS", "")出错呀!!

老翔 2002-03-07
  • 打赏
  • 举报
回复
我认为是你的newnode是空值的关系。

改一下

在set currentnode=objroot.appendChild(newnode)之前加两句
set newnode = objxml2.createNode(1,"VIDEOS","");
newnode.text = "测试"

去掉set newnode=objxml2.documentElement


老翔 2002-03-07
  • 打赏
  • 举报
回复
我认为是你的newnode是空值的关系。

在set currentnode=objroot.appendChild(newnode)之前加两句
newnode = objxml2.createNode(1, "VIDEOS", "");
newnode.text = "测试"

hmbory 2002-03-07
  • 打赏
  • 举报
回复
可以了!!自己搞糊涂了:)谢谢你!
老翔 2002-03-07
  • 打赏
  • 举报
回复
request.servervariables("APPL_PHYSICAL_PATH") & "\temp.xml"
将这句直接写成
"c:\temp.xml"

我怀疑是安全性问题!
hmbory 2002-03-07
  • 打赏
  • 举报
回复
有temp.xml文件时
提示(0x80070057)
/temp.asp, 第 58 行
也就是set currentnode =objroot.appendChild(newnode)

没有temp.xml文件时提示
Microsoft VBScript 运行时错误 (0x800A01A8)
/temp.asp, 第 58 行
代码一样呀!你怎么没提示错误呀!
老翔 2002-03-07
  • 打赏
  • 举报
回复
程序我改了一下,我这里已经可以运行了!
<%
dim name,address
name=trim(request("name"))
address=trim(request("address"))
if name<>"" then
addxml name,address
end if


Function addxml(name,address)
dim temp,objxml1,objxml2,objroot,fso,newnode,currentnode,sourcefile,objfile

addxml=0
sourcefile=request.servervariables("APPL_PHYSICAL_PATH") & "\temp.xml"
temp=temp & "<INFORMATION><NAME>"+name+"</NAME>"
temp=temp & "<ADDRESS>"+address+"</ADDRESS></INFORMATION>"
set fso=server.createobject("scripting.filesystemobject")
set objxml1=server.CreateObject("Microsoft.XMLDOM")
set objxml2=server.CreateObject("Microsoft.XMLDOM")

'************************************************************
'关键修改在这里
If Not fso.fileExists(sourcefile) Then
'新建xml文件,文件不存在
'set objfile=fso.createtextfile(sourcefile,True)
'objfile.close 创建文件可以不管,到时候它会自动save文件的
set objroot = objxml1.createElement("Root")
objxml1.appendChild objroot
'*********************************************
'关键是要加,一个根元素!!!!!
'*********************************************
else
objxml1.async=false
objxml1.Load sourcefile
set objroot = objxml1.documentElement
end If
'**********************************************************

'如果文件不能被加载,则退出
if not isobject(objroot) then
response.write "no file loaded"
exit function
end if
objxml2.loadXML(temp)

'这里是没有错的!
set newnode=objxml2.documentElement
set currentnode =objroot.appendChild(newnode)
objxml1.save(sourcefile)
set objxml1=nothing
set objxml2=nothing
addxml=1

end function

8,906

社区成员

发帖
与我相关
我的任务
社区描述
XML/XSL相关问题讨论专区
社区管理员
  • XML/XSL社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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