您的位置:程序门 -> web 开发 -> asp



asp 读取xml文件的问题,很急!!!!!!!!!!!!!!!!!!


[收藏此页] [打印本页]选择字色:背景色:字体:[][][]


asp 读取xml文件的问题,很急!!!!!!!!!!!!!!!!!!
发表于:2008-01-16 13:49:09 楼主
  <?xml   version="1.0"   encoding="utf-8"   ?>  
-   <userdata>
-   <row   num="0">
    <uid> 用户id </uid>  
    <realname> 真实姓名 </realname>  
    <sex> 性别 </sex>  
    <birthday> 生日 </birthday>  
    <tel> 电话 </tel>  
    <fax> 传真 </fax>  
    <addr> 地址 </addr>  
    <postcode> 邮编 </postcode>  
    <companyname> 公司名称 </companyname>  
    <companyurl> 公司网址 </companyurl>  
    </row>
-   <row   num="1">
    <uid> 111 </uid>  
    <realname> 闫如斌 </realname>  
    <sex> 男 </sex>  
    <birthday> 1982年10月4日 </birthday>  
    <tel> 0546-7700993 </tel>  
    <fax> 0546-7700993 </fax>  
    <addr> 杭州娱乐数字产业园 </addr>  
    <postcode> 890000 </postcode>  
    <companyname> 九赢网络 </companyname>  
    <companyurl> www.onexg.com </companyurl>  
    </row>
-   <row   num="2">
    <uid> 222 </uid>  
    <realname> john </realname>  
    <sex> man </sex>  
    <birthday> 20010201 </birthday>  
    <tel> 057100000 </tel>  
    <fax> 057100000 </fax>  
    <addr> wqeqweqweqwe </addr>  
    <postcode> 234334 </postcode>  
    <companyname> asdasdasdasd </companyname>  
    <companyurl> asdasdasdasd </companyurl>  
    </row>
    </userdata>


这样的xml文件,我怎么读取,我想按照每行,一次读取每个字段的值,然后存到数据库里,或者是读取每行的   某个字段,怎么得到     row   多少行
发表于:2008-01-16 14:07:141楼 得分:0
vbscript code
dim myrows set myrows = xmldoc.documentelement.selectnodes("//row") '//myrows已经是一个row的 nodelist '//myrows.length 就得到了行数 '//使用 for each 或 for next就可以遍历这个 nodelist, 针对每个 row进行处理。 具体代码略
发表于:2008-01-16 14:11:542楼 得分:0
<?xml   version="1.0"   encoding="utf-8"   ?>  
<count   date="2007-9">
    <member   unionid="47214"   orderfromnumber="07091813581892"   ordermoney="¥681.30"   orderstate="已取消"   delamination="30"   delaminamoney="¥204.39"   joindate="2007-9-18   13:58:18"   />  
    <member   unionid="47214"   orderfromnumber="07091717374670"   ordermoney="¥216.00"   orderstate="已发货"   delamination="30"   delaminamoney="¥64.80"   joindate="2007-9-17   17:37:46"   />  
    <member   unionid="47214"   orderfromnumber="07091421142551"   ordermoney="¥259.00"   orderstate="已处理完毕"   delamination="30"   delaminamoney="¥77.70"   joindate="2007-9-14   21:14:25"   />  
    <member   unionid="22221"   orderfromnumber="07090711003972"   ordermoney="¥389.00"   orderstate="已取消"   delamination="10"   delaminamoney="¥38.90"   joindate="2007-9-7   11:00:39"   />  
</count>


还有这种xml的读取方法
发表于:2008-01-16 14:35:163楼 得分:0
一样的,更改xquery表达式即可.
发表于:2008-01-16 14:37:234楼 得分:0
我不太明白,能不能给我段实例程序
发表于:2008-01-16 14:42:565楼 得分:0
set   myrows   =   xmldoc.documentelement.selectnodes("//row")

就是查找文档中所有节点名为   row的节点,得到节点集合即   nodelist.
xquery表达式就是   //row
而下一级节点级可以用   childnodes表过.
for   i=0   to   myrows.length-1
    myrows.item(i).childnodes.item(0).text   '//循环将得到   每个   row下的uid的节点文本.   myrows.item(i)即指的第i个row.   .childnodes.item(0)即row节点下的第一个子节点.也即uid.   其它类似
next

你的第二个,xquery表达式应用   //member

myrows.item(i).attirbutes.item(0).value   '//循环将得到每个   member节点的第1(索引值为0)个属性值,也即   unionid的值
发表于:2008-01-16 14:44:296楼 得分:0
具体的内容比较多,如果你没有基础,我没办法一两句话说明白.
到ms下载xmlsdk,然后看文档,   看关于dom和xpath这两个部分类容,   其本上你用dom来操作xml就没有问题了.
发表于:2008-01-16 17:05:347楼 得分:0
<%  
dim   xml,objnode,objatr,ncntchd,ncntatr  
strineturl   ="http://www.onexg.com/xml/yoyowei.xml"  
dim   httpreq  

set   xml=server.createobject("microsoft.xmldom")  
xml.async=false  
path=server.mappath("azg.xml")    
if   not   xml.load(path)   then    
      response.write   "未能加载文档"    
      response.end    
end   if    

set   objnode=xml.documentelement.selectnodes("//member")  
ncntchd=objnode.length-1  

for   i=0   to   ncntchd  
      response.write     bojnode.item(i).attirbutes.item(1).value   &" <br> "
next  

set   objnode=nothing  
set   xml=nothing  
%>  


读取的

<?xml       version="1.0"       encoding="utf-8"       ?>      
<count       date="2007-9">  
        <member       unionid="47214"       orderfromnumber="07091813581892"       ordermoney="¥681.30"       orderstate="已取消"       delamination="30"       delaminamoney="¥204.39"       joindate="2007-9-18       13:58:18"       />      
        <member       unionid="47214"       orderfromnumber="07091717374670"       ordermoney="¥216.00"       orderstate="已发货"       delamination="30"       delaminamoney="¥64.80"       joindate="2007-9-17       17:37:46"       />      
        <member       unionid="47214"       orderfromnumber="07091421142551"       ordermoney="¥259.00"       orderstate="已处理完毕"       delamination="30"       delaminamoney="¥77.70"       joindate="2007-9-14       21:14:25"       />      
        <member       unionid="22221"       orderfromnumber="07090711003972"       ordermoney="¥389.00"       orderstate="已取消"       delamination="10"       delaminamoney="¥38.90"       joindate="2007-9-7       11:00:39"       />      
</count>  


怎么总是出现这种错误       说是       处理   url   时服务器出错。请与系统管理员联系。       太晕了


就是           response.write     bojnode.item(i).attirbutes.item(1).value   &" <br> "         的错误
发表于:2008-01-16 17:24:258楼 得分:0
<%
set   objrootsite   =   objxml.documentelement.selectsinglenode("//userdata")

pagesize   =10'假设每页显示10条记录
allnodesnum   =objrootsite.childnodes.length-1
'获取子节点数据(因为是从节点数从0开始的所最大子节点数要减1

pagenum=allnodesnum\pagesize+1'算出总页数
pageno=request.querystring("pageno")
if   pageno=""   then'如果是每一次获得页面则定位到每一页显示最新的留言
pageno=pagenum
end   if
starnodes=pageno*pagesize-1'获得起始节点
endnodes=(pageno-1)*pagesize'获得结束节点
if   endnodes <0   then
endnodes=0
end   if
if   starnodes> allnodesnum   then'判断起始节点数是否超过总的节点数
endnodes=endnodes-(starnodes-allnodesnum)
'如果超过则结束节点要减去(starnodes-allnodesnum)的差值否则下标会超界出错
starnodes=allnodesnum
end   if
if   endnodes <0   then
endnodes=0
end   if
while   starnodes> =endnodes
response.write   starnodes
set   node   =   objrootsite.childnodes.item(starnodes)
response.write   node.text
'从结束节点到超始节点之间读取节点数据
username   =   node.childnodes.item(1).text
                                                response.write   "uid:"&username
                                                starnodes=starnodes-1
                                    wend
%>

大概就这样
发表于:2008-01-16 20:39:199楼 得分:0
response.write           bojnode.childnodes.item(i).attirbutes.item(1).value       &"   <br>   "    
发表于:2008-01-17 10:37:5310楼 得分:0
response.write     bojnode.childnodes.item(i).attirbutes.item(1).value   &"   <br>       "      

改成这样     还是       处理   url   时服务器出错。请与系统管理员联系。   这个错误
发表于:2008-01-17 11:02:4511楼 得分:0
自己顶一下         奇怪   ,怎么会有这种问题
发表于:2008-01-17 11:12:3812楼 得分:0
到底怎么回事呀
发表于:2008-01-17 15:38:0613楼 得分:0
肯定是有错误了.   报这个错,是因为你在iis设置中没有显示真正的错误.
发表于:2008-01-18 14:15:3614楼 得分:0
response.write     bojnode.childnodes.item(i).attirbutes.item(1).value&" <br> "    

抱那个错误     是因为     bojnode.childnodes.item(i).attirbutes.item(1).value       这个值为空     为什么读不出值呢


快速检索

最新资讯
热门点击