zoukankan      html  css  js  c++  java
  • ASP发送和接收XML数据的处理方法

    ASP发送和接收XML数据的处理方法,利用了MSXML2.XMLHTTP对像。
       request.asp

    dim Https
    set Https=server.createobject("MSXML2.XMLHTTP")
    '定义一个XMLHTTP对像
    Https.open "POST","http://127.0.0.1/testpost/response.asp",false
    Https.send "<?xml version=""1.0""?><misc_command version=""1.6""><command_name>echo</command_name>
    <command_data_block><sid>123456</sid><service_id>987654</service_id>
    <sp_id>11111</sp_id><sp_password>22222</sp_password></command_data_block>
    </misc_command>"
    if Https.readystate=4 then
     response.write "提交成功"
     'readstate读取状态为4则成功,继续后面的,不成功当然就不用继续处理了
     dim objstream
     set objstream = Server.CreateObject("adodb.stream")
     '定义一个stream,因为读过来的直接拿出来是乱码的,所以得处理一下
     objstream.Type = 1
     objstream.Mode =3
     objstream.Open
     objstream.Write Https.responseBody
     objstream.Position = 0
     objstream.Type = 2
     objstream.Charset = "GB2312"
     html = objstream.ReadText
     '转好码,就放到html里,好关闭这些对像
     objstream.Close
     set objstream = nothing
     set https=nothing
    end if
    response.write html

    response.asp

    '创建DOMDocument对象
    Set xml = Server.CreateObject ("msxml2.DOMDocument")
    xml.async = False

    '装载POST数据
    xml.Load Request
    If xml.parseError.errorCode <> 0 Then
     response.write "不能正确接收数据" & "Description: " & xml.parseError.reason & "<br>Line: " & xml.parseError.Line
    End If

    set blogchild=xml.getElementsByTagName("misc_command")
    'the_text=blogchild.item(0).childnodes(1).text
    'the_text=blogchild.item(0).text
    'for i=0 to blogchild.length-1
    response.write the_text

      利用这种方法,ASP里调用Servlet或Web Service都是很轻松的!


    利用ASP从远程服务器上接收XML数据


    http://www.kaidianle.com/article/list10381.html
    <%
    dim objXML
    dim objRootElement
    dim strValue
    dim strInetURL
    dim strXML
    dim item
               
    strInetURL ="http://pf.inetsolution.com/inetactive2001/inetactive2001news.xml"
    Dim HttpReq
     
    set HttpReq = server.CreateObject("MSXML2.XMLHTTP")
     
    HttpReq.open "GET", "http://pf.inetsolution.com/inetactive2001/inetactive2001news.xml", False
    HttpReq.send
    strXML = HttpReq.responseText      
    Set objXML = Server.CreateObject("Msxml2.DOMDocument")
    objXML.validateonparse = true
    objXML.async=false
    objXML.loadXML(strXML)
    if objXML.ParseError.errorCode <> 0 then
        Response.Write("Error: " & objXML.parseError.reason & "<br>")

    Response.Write("Code: 0x" & hex(objXML.parseError.errorCode) & "<br>")
        Response.Write("At Line: " & objXML.parseError.line & "<br>")
        Response.Write("At pos: " & objXML.parseError.linePos & "<br>")
                   
    else
        set objRootElement = objXML.documentElement
        if not isObject(objRootElement) then
            Response.Write("no file loaded")
        else
            Response.Write(objRootElement.childnodes(0).text)
        end if
    end if
    %>


    ASP操作XML的方法


    ASP通过XMLDom在服务器端操作XML文件的主要方法和实现
    对于小数据量,xml文件在检索更新上于ACCESS有很多优势。

    我曾经测试过不用数据库,把网站的会员信息,商品数据信息,交易信息,网站定制信息全部存放在三个xml文件中,运行结果十分正常,感觉上比数据库快多了,不过没有作测试,不能确定。

    下面说一下创建,查询,修改等对xml操作的主要方法

    '创建DOM对象
    set objDom=server.CreateObject("MicroSoft.XMLDom")

    '取得xml数据
    '方法1 取得xml文件的xml数据
    objDom.load("c:test.xml")
    '方法2 取得xml数据串的数据
    objDom.loadxml("<people><man name="sd"/></people>")

    '创建一个节点对象
    Set Newnode=objDom.CreateElement("people")
    '给这个节点赴值
    Newnode.Text="人"
    ' 给这个节点添加属性
    Set NewAttribute=objDom.CreateNode("attribute","name","")
    NewAttribute.Text= "张三"
    Newnode.SetAttributeNode NewAttribute
    '给这个节点添加子节点
    Set NewnodeChild=objDom.CreateElement("address")
    Newnode.appendChild NewnodeChild
    '保存这个节点对象
    objDom.appendChild Newnode
    objDom.save("c:test.xml")

    '查找一个节点对象
    set objtofind=objdom.documentElement.SelectSingleNode("//people/man")
    '取出这个节点对象的 节点名,节点值,某个属性值,和全部的xml
    nodename=objtofind.nodename
    nodevalue=objtofind.text
    objtofind.GetAttributeNode("name").Nodevalue '属性名为name的属性值

    '取出一个属性节点对象
    set objattrtofind=objdom.documentElement.SelectSingleNode("//people/man"). GetAttributeNode("name")
    '取出这个节点的属性名,属性值
    nodeattrname=objattrtofind.nodename
    nodeattrvalue=objattrtofind.nodevalue

    '删除一个节点对象
    set objnode=objdom.documentElement.SelectSingleNode("//people/man") '要删除的节点
    set objparentnode=objdom.documentElement.SelectSingleNode("//people") '要删除的节点的父节点
    objparentnode.removeChild objnode

    '取出一个节点的字节点集合
    set objnodes=objdom.documentElement.SelectSingleNode("//people/man").ChildNodes

    遍历这个集合
    方法1
    for each element in objnodes
    response.write element.nodename 字节点名
    response.write element.text 字节点值
    next
    方法2
    domlength=objnodes.length
    for i = 0 to domlength-1
    response.write objnodes.childnodes(i).nodename 字节点名
    response.write objnodes.childnodes(i).text 字节点值
    next

    '取出一个节点的属性集合
    set objnodes=objdom.documentElement.SelectSingleNode("//people/man").GetAttributeNode("name").attributes
    遍历这个集合
    for each element in objnodes
    response.write element.nodename 属性名
    response.write element.nodevalue 属性值
    next

    等能够熟练的运用xmldom对象来操作xml文件了,就可以享
    受xmlhttp对象来实现asp下的许多功能了。


    re:[转]ASP通过XMLDom在服务器端操作XML文件的主要方法和实现
    飞飞,你怎么不介绍一下@的用法,没了这个,很多事不方便。
    xml,有人也称之为数据压缩技术,顾名思义,xml是可以充当数据库来用。
    所以,我们可以把xml看成是“小型的数据库”。为什么说是小型呢?因为xml本身的功能及应用方便,与数据库还是存在着一定的差别。那我们为什么要使用xml呢?因为,有时候我们的一些应用程序虽然进行数据存取,但是,如果使用数据库的话,显行有些不够灵活,方便。这个时候,我们就应该结合xml来使用。
    xml既然可以看成是数据库,那它的第一步工作就当然是创建链接对象了。(以ASP+xml为例)
    创建方法同链接数据库一样,用server.createobject为创建。
    方法如下:
    set xmlDoc= Server.CreateObject("microsoft.xmldom")
    xmlDoc.async=false
    xmldata=数据源绝对路径
    xmlDoc.load xmldata '这里使用load方法进行链接

    既于xml的数据格式是比较人性化的,可以由于人为或其它的原因,引起数据格式不合法,这时如果继续使用的话,会引起程序出程,这样,我们往往在创建好链接对象后进行数据格式验证。
    方法如下:
    if xmlDoc.parseError.errorCode<>0 then
    ....错误处理

    <%
    '----------------------------------------------------------------
    '程序简介: 完成asp语言对XML文档中指定节点文本的增加、删除、修改、查看
    '入口参数: 无
    '出口参数: 无
    '------------------------------------------------
    '函数名字:ConnectXml()
    '入口参数: filename 需要连接或打开的xml文件名
    '出口参数: 无
    '返回值 :ConnectXml=0,XMLMorntekDocument就是一个成功装载XML文档的对象了。
    ' ConnectXml<>0,则打印错误信息strError
    '------------------------------------------------
    dim XMLMorntekDocument

    function ConnectXml(filename)
    dim strSourceFile
    strSourceFile = Server.MapPath(filename)
    Set XMLMorntekDocument = Server.CreateObject("Microsoft.XMLDOM")
    XMLMorntekDocument.async = false
    XMLMorntekDocument.load(strSourceFile)
    ConnectXml=XMLMorntekDocument.parseerror.errorcode
    if XMLMorntekDocument.parseerror.errorcode<>0 then
    strError="<h2>error"&XMLMorntekDocument.parseerror.errorcode&"</h2>"

    strError=strError&XMLMorntekDocument.parseerror.reason&"<br>"
    strError=strError&XMLMorntekDocument.parseerror.url&"<br>"
    strError=strError&XMLMorntekDocument.parseerror.line&"<br>"
    strError=strError&XMLMorntekDocument.parseerror.filepos&"<br>"
    strError=strError&XMLMorntekDocument.parseerror.srcText&"<br>"
    response.write strError
    end if
    end function

    '------------------------------------------------
    '函数名字:CloseXml()
    '入口参数: 无
    '出口参数: 无
    '------------------------------------------------
    function CloseXml(XMLMorntekDocument)
    if IsObject(XMLMorntekDocument) then
    set XMLMorntekDocument=nothing
    end if
    end function


    '------------------------------------------------
    '函数名字:SelectXmlNodeText(elementname)
    '入口参数: elementname 元素的名字
    '出口参数: 无
    '------------------------------------------------
    function SelectXmlNodeText(elementname)
    elementname="//"&elementname
    temp=XMLMorntekDocument.selectSingleNode(elementname).text
    selectXmlNodeText= server.htmlencode(temp)

    end function

    '------------------------------------------------
    '函数名字:InsertXmlNodeText(befelementname,elementname,elementtext)
    '入口参数: elementname 插入的元素的名字
    ' befelementname在此元素的名字前面插入元素
    ' elementtext 插入的元素的文本
    '出口参数: 无
    '------------------------------------------------
    function InsertXmlNodeText(befelementname,elementname,elementtext)
    dim befelement,element
    set befelement=XMLMorntekDocument.selectSingleNode("//"&befelementname)
    set element= XMLMorntekDocument.createelement(elementname)
    befelement.insertBefore element,befelement.firstchild
    element.text=elementtext
    end function

    '------------------------------------------------
    '函数名字:UpdateXmlNodeText(elementname,newelementtext)
    '入口参数: elementname 元素的名字
    ' newelementtext元素的新文本
    '出口参数: 无
    '------------------------------------------------
    function UpdateXmlNodeText(elementname,newelementtext)
    dim element
    set element=XMLMorntekDocument.selectSingleNode("//"&elementname)
    element.text=newelementtext
    end function

    '------------------------------------------------
    '函数名字:DeleteXmlNodeText(elementname)
    '入口参数: elementname 元素的名字
    '出口参数: 无
    '------------------------------------------------
    function DeleteXmlNodeText(elementname)
    XMLMorntekDocument.selectSingleNode("//"&elementname).text =""
    end function
    %>

  • 相关阅读:
    118. Pascal's Triangle
    697. Degree of an Array
    1013. Partition Array Into Three Parts With Equal Sum
    167. Two Sum II
    ol7 禁用mysql 自启动
    pgsql常用命令
    清空history 命令记录
    pgsql启动报错
    在rhel 7.4中安装glibc-devel-2.17-196.el7.i686包的过程详录
    postgresql-9.2 install
  • 原文地址:https://www.cnblogs.com/chenbg2001/p/2203843.html
Copyright © 2011-2022 走看看