新书推介:《语义网技术体系》
作者:瞿裕忠,胡伟,程龚
   XML论坛     W3CHINA.ORG讨论区     计算机科学论坛     SOAChina论坛     Blog     开放翻译计划     新浪微博  
 
  • 首页
  • 登录
  • 注册
  • 软件下载
  • 资料下载
  • 核心成员
  • 帮助
  •   Add to Google

    >> 关于 XML 的一般性技术讨论,提供 XML入门资料 和 XML教程
    [返回] 中文XML论坛 - 专业的XML技术讨论区XML.ORG.CN讨论区 - XML技术『 XML基础 』 → 关于asp 读取xml中出现的问题 查看新帖用户列表

      发表一个新主题  发表一个新投票  回复主题  (订阅本版) 您是本帖的第 15525 个阅读者浏览上一篇主题  刷新本主题   树形显示贴子 浏览下一篇主题
     * 贴子主题: 关于asp 读取xml中出现的问题 举报  打印  推荐  IE收藏夹 
       本主题类别:     
     hellolans 帅哥哟,离线,有人找我吗?
      
      
      等级:大一新生
      文章:7
      积分:81
      门派:XML.ORG.CN
      注册:2008/6/18

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给hellolans发送一个短消息 把hellolans加入好友 查看hellolans的个人资料 搜索hellolans在『 XML基础 』的所有贴子 引用回复这个贴子 回复这个贴子 查看hellolans的博客楼主
    发贴心情 关于asp 读取xml中出现的问题

    求教各位:
    我这里有一个其他程序导出的aa.xml文件,内容如下:
    <NewDataSet>
      <xs:schema id="NewDataSet" xmlns="" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
        <xs:element name="NewDataSet" msdata:IsDataSet="true" msdata:Locale="zh-CN">
          <xs:complexType>
            <xs:element name="a1" type="xs:string" minOccurs="0" />
            <xs:element name="a2" type="xs:string" minOccurs="0" />  
          </xs:complexType>
        </xs:element>
      </xs:schema>
      <COMMON>
        <aa>1</aa>
        <bb>2</bb>
      </COMMON>
    </NewDataSet>

    对于xml没接触过,网上查询xml好像第一行应为
    <?xml version="1.0" encoding="gb2312"?>

    于是通过以下先获取aa.xml内容然后再生成bb.xml的方式加入到第一行
    Function LoadFile(file)
    Dim objStream
    On Error Resume Next
    Set objStream = Server.CreateObject("ADODB.Stream")
    If Err.Number=-2147221005 Then
    Response.Write "<div align='center'>非常遗憾,您的主机不支持ADODB.Stream,不能使用本程序</div>"
    Err.Clear
    Response.End
    End If
    With objStream
    .Type = 2
    .Mode = 3
    .Open
    .LoadFromFile Server.MapPath(File)
    If Err.Number<>0 Then
    Response.Write "<div align='center'>文件<font color='#ff0000'>"&File&"</font>无法被打开,请检查是否存在!</font></div>"
    Err.Clear
    Response.End
    End If
    .Charset = "GB2312"
    .Position = 2
    LoadFile = .ReadText
    .Close
    End With
    Set objStream = Nothing
    End Function

    '通过LoadFile获取aa.xml文件内容
    xmltxt=LoadFile("aa.xml")


    '生成bb.xml
    xmlfile=server.mappath("bb.xml")
    Set fso = CreateObject("Scripting.FileSystemObject")
    Set MyFile = fso.CreateTextFile(xmlfile,True)
    MyFile.WriteLine("<?xml version=""1.0"" encoding=""gb2312""?>")
    MyFile.WriteLine(xmltxt)
    MyFile.Close

    现在出现的问题是:
    我在读取这个bb.xml内容的时候报错,但是如果把bb.xml用记事本打开然后再保存一下就能正常使用了,实际要求中没办法做到将每个文件都进行打开保存这样操作一遍,不知道问题出在哪,弄了两天了都没解决,请各位帮忙指点一下.

    另外如果我直接生成bb.xml内容的话能读
    '生成bb.xml及内容
    xmlfile=server.mappath("bb.xml")
    Set fso = CreateObject("Scripting.FileSystemObject")
    Set MyFile = fso.CreateTextFile(xmlfile,True)
    MyFile.WriteLine("<NewDataSet>")
    MyFile.WriteLine("<COMMON>")
    MyFile.WriteLine("<aa>测试</aa>")
    MyFile.WriteLine("<bb>测试1</bb>")
    MyFile.WriteLine("</COMMON>")
    MyFile.WriteLine("</NewDataSet>")
    MyFile.Close

    '读取bb.xml
    SettingFile="bb.xml"
    Dim objXML,objRoot,Total,I
    Set objXML=Server.CreateObject("Microsoft.XMLDOM")
    objXML.async=False
    objXML.load (Server.Mappath(SettingFile))
     
    Set objRoot=objXML.selectsinglenode("NewDataSet/COMMON")
        if isobject(objRoot)=false then
           Response.write "文件读取失败"
        end if
     
        Total=objRoot.childnodes.length  '//就是这句报错: (0x800A01A8)缺少对象

        ReDim Site_Info(Total-1)
        For I=0 To Total-1
         Site_info(i)=objRoot.childnodes(i).text
         Response.Write "site_info("&i&")="&site_info(i)&"
    "
        Next
        Set objRoot=Nothing
        Set objXML=Nothing


    [此贴子已经被作者于2008-6-20 20:34:41编辑过]

       收藏   分享  
    顶(0)
      




    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2008/6/18 14:33:00
     
     hellolans 帅哥哟,离线,有人找我吗?
      
      
      等级:大一新生
      文章:7
      积分:81
      门派:XML.ORG.CN
      注册:2008/6/18

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给hellolans发送一个短消息 把hellolans加入好友 查看hellolans的个人资料 搜索hellolans在『 XML基础 』的所有贴子 引用回复这个贴子 回复这个贴子 查看hellolans的博客2
    发贴心情 
    有人愿意帮忙吗? 愿意支付酬劳,QQ: 3 8 6 0 1 9 7
    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2008/6/18 22:29:00
     
     Qr 帅哥哟,离线,有人找我吗?
      
      
      威望:9
      等级:博士二年级(版主)
      文章:4392
      积分:29981
      门派:XML.ORG.CN
      注册:2004/5/15

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给Qr发送一个短消息 把Qr加入好友 查看Qr的个人资料 搜索Qr在『 XML基础 』的所有贴子 访问Qr的主页 引用回复这个贴子 回复这个贴子 查看Qr的博客3
    发贴心情 
    测试程序运行正常,运行结果为:
    site_info(0)=1
    site_info(1)=2
    说明bb.xml可以正常读取,无须记事本另存。
    怀疑你的aa.xml的文件编码可能是UTF-8,如果不是这个原因,暂时看不出问题。

    ----------------------------------------------
    没人帮忙,那就靠自己,自己才是最好的老师!本人拒绝回答通过站内短消息提出的问题!

    blog:http://Qr.blogger.org.cn

    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2008/6/18 23:21:00
     
     hellolans 帅哥哟,离线,有人找我吗?
      
      
      等级:大一新生
      文章:7
      积分:81
      门派:XML.ORG.CN
      注册:2008/6/18

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给hellolans发送一个短消息 把hellolans加入好友 查看hellolans的个人资料 搜索hellolans在『 XML基础 』的所有贴子 引用回复这个贴子 回复这个贴子 查看hellolans的博客4
    发贴心情 
    谢谢Qr, 如果aa.xml为UTF-8的编码格式的话我该怎么做才能正常读取由aa.xml内容构成的bb.xml呢
    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2008/6/18 23:33:00
     
     hellolans 帅哥哟,离线,有人找我吗?
      
      
      等级:大一新生
      文章:7
      积分:81
      门派:XML.ORG.CN
      注册:2008/6/18

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给hellolans发送一个短消息 把hellolans加入好友 查看hellolans的个人资料 搜索hellolans在『 XML基础 』的所有贴子 引用回复这个贴子 回复这个贴子 查看hellolans的博客5
    发贴心情 
    问题的确是出在aa.xml这个源文件的编码格式上,如果首先记事本打开原来的aa.xml文件再保存的话bb.xml就能正常读取了,怎么样才能知道aa.xml的编码格式呢,如果知道aa.xml的编码格式后是不是修改上面GB2312为aa.xml相同格式就行了
    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2008/6/18 23:54:00
     
     Qr 帅哥哟,离线,有人找我吗?
      
      
      威望:9
      等级:博士二年级(版主)
      文章:4392
      积分:29981
      门派:XML.ORG.CN
      注册:2004/5/15

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给Qr发送一个短消息 把Qr加入好友 查看Qr的个人资料 搜索Qr在『 XML基础 』的所有贴子 访问Qr的主页 引用回复这个贴子 回复这个贴子 查看Qr的博客6
    发贴心情 
    两种方法,
    1、让你的程序导出gb2312编码的文件,文件编码为ANSI
    2、将XML的首行改为<?xml version="1.0" encoding="UTF-8"?>,bb.xml的文件编码也同为UTF-8。

    文件编码可用记事本打开后“另存为”,看其编码为当前文件编码。

    ----------------------------------------------
    没人帮忙,那就靠自己,自己才是最好的老师!本人拒绝回答通过站内短消息提出的问题!

    blog:http://Qr.blogger.org.cn

    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2008/6/18 23:55:00
     
     hellolans 帅哥哟,离线,有人找我吗?
      
      
      等级:大一新生
      文章:7
      积分:81
      门派:XML.ORG.CN
      注册:2008/6/18

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给hellolans发送一个短消息 把hellolans加入好友 查看hellolans的个人资料 搜索hellolans在『 XML基础 』的所有贴子 引用回复这个贴子 回复这个贴子 查看hellolans的博客7
    发贴心情 
    <%
    '获取aa.xml内容

    txtcon=LoadFile("aa.xml")

    '生成bb.xml
     
    call SaveToFile(txtcon,"bb.xml")


    Function LoadFile(File)
    Dim objStream
    On Error Resume Next
    Set objStream = Server.CreateObject("ADODB.Stream")
    If Err.Number=-2147221005 Then
    Response.Write "<div align='center'>非常遗憾,您的主机不支持ADODB.Stream,不能使用本程序</div>"
    Err.Clear
    Response.End
    End If
    With objStream
    .Type = 2
    .Mode = 3
    .Open
    .LoadFromFile Server.MapPath(File)
    If Err.Number<>0 Then
    Response.Write "<div align='center'>文件<font color='#ff0000'>"&File&"</font>无法被打开,请检查是否存在!</font></div>"
    Err.Clear
    Response.End
    End If
    .Charset = "gb2312"
    .Position = 2
    LoadFile = .ReadText
    .Close
    End With
    Set objStream = Nothing
    End Function

    Sub SaveToFile(strBody,File)
        Dim objStream
        On Error Resume Next
        Set objStream = Server.CreateObject("ADODB.Stream")
        If Err.Number=-2147221005 Then
            Response.Write "<div align='center'>非常遗憾,您的主机不支持ADODB.Stream,不能使用本程序</div>"
            Err.Clear
            Response.End
        End If
        With objStream
            .Type = 2
            .Open
            .Charset = "gb2312"
            .Position = objStream.Size
      .WriteText = "<?xml version=""1.0"" encoding=""ANSI""?>"&vbcrlf     
            .WriteText = strBody
      
            .SaveToFile Server.MapPath(File),2
            .Close
        End With
        Set objStream = Nothing
    End Sub

    '读取bb.xml

    SettingFile="bb.xml"
        Dim objXML,objRoot,Total,I
        Set objXML=Server.CreateObject("Microsoft.XMLDOM")
        objXML.async=False
        objXML.load (Server.Mappath(SettingFile))
        Set objRoot=objXML.selectsinglenode("NewDataSet/COMMON")
        if isobject(objRoot)=false then
           Response.write "文件读取失败"
        end if
        Total=objRoot.childnodes.length
        ReDim Site_Info(Total-1)
        For I=0 To Total-1
         Site_info(i)=objRoot.childnodes(i).text
         Response.Write "site_info("&i&")="&site_info(i)&"
    "
        Next
        Set objRoot=Nothing
        Set objXML=Nothing

    %>

    上面这样试了不行

    Sub SaveToFile(strBody,File)里面
    Charset = "gb2312"
    Charset = "UTF-8"

    <?xml version="1.0" encoding="UTF-8"?>
    <?xml version="1.0" encoding="ANSI"?>

    aa.xml的编码格式是 ANSI

    都试了不行,愁死我了

    Qr版主,商量一下,我这里也没上传权限,能QQ给你传一下aa.xml的源文件帮我试试吗

    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2008/6/19 0:18:00
     
     Qr 帅哥哟,离线,有人找我吗?
      
      
      威望:9
      等级:博士二年级(版主)
      文章:4392
      积分:29981
      门派:XML.ORG.CN
      注册:2004/5/15

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给Qr发送一个短消息 把Qr加入好友 查看Qr的个人资料 搜索Qr在『 XML基础 』的所有贴子 访问Qr的主页 引用回复这个贴子 回复这个贴子 查看Qr的博客8
    发贴心情 
    <?xml version="1.0" encoding="ANSI"?>没有这种用法,对应的改encoding为iso-8859-1才正确。
    我没有改你任何代码,纯粹复制、粘贴,用记事本保存文件,一切OK!

    你用记事本打开aa.xml,然后“另存为”,查看“另存为”对话框窗口中的编码是“ANSI”还是“UTF-8”,在此贴出来。或者直接把文件打包,发到我的EMAIL中。
    睡觉咯,有事明天再说,呵呵!

    ----------------------------------------------
    没人帮忙,那就靠自己,自己才是最好的老师!本人拒绝回答通过站内短消息提出的问题!

    blog:http://Qr.blogger.org.cn

    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2008/6/19 1:15:00
     
     hellolans 帅哥哟,离线,有人找我吗?
      
      
      等级:大一新生
      文章:7
      积分:81
      门派:XML.ORG.CN
      注册:2008/6/18

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给hellolans发送一个短消息 把hellolans加入好友 查看hellolans的个人资料 搜索hellolans在『 XML基础 』的所有贴子 引用回复这个贴子 回复这个贴子 查看hellolans的博客9
    发贴心情 
    非常感谢
    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2008/6/19 1:47:00
     
     hellolans 帅哥哟,离线,有人找我吗?
      
      
      等级:大一新生
      文章:7
      积分:81
      门派:XML.ORG.CN
      注册:2008/6/18

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给hellolans发送一个短消息 把hellolans加入好友 查看hellolans的个人资料 搜索hellolans在『 XML基础 』的所有贴子 引用回复这个贴子 回复这个贴子 查看hellolans的博客10
    发贴心情 
    Qr版主,这个aa.xml用无组件上传到服务器后又不能正常读了
    提示   缺少对象: '[object]'
    response.write ""& xml.selectsinglenode("//COMMON").text &" <br>"  这句报错
    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2008/6/20 20:31:00
     
     GoogleAdSense
      
      
      等级:大一新生
      文章:1
      积分:50
      门派:无门无派
      院校:未填写
      注册:2007-01-01
    给Google AdSense发送一个短消息 把Google AdSense加入好友 查看Google AdSense的个人资料 搜索Google AdSense在『 XML基础 』的所有贴子 访问Google AdSense的主页 引用回复这个贴子 回复这个贴子 查看Google AdSense的博客广告
    2024/5/13 22:56:36

    本主题贴数11,分页: [1] [2]

    管理选项修改tag | 锁定 | 解锁 | 提升 | 删除 | 移动 | 固顶 | 总固顶 | 奖励 | 惩罚 | 发布公告
    W3C Contributing Supporter! W 3 C h i n a ( since 2003 ) 旗 下 站 点
    苏ICP备05006046号《全国人大常委会关于维护互联网安全的决定》《计算机信息网络国际联网安全保护管理办法》
    125.000ms