編程之道

          無論是批評的,贊揚的,指著的都請EMAIL給我,你的建議將是我前進的動力! 聯(lián)系我

          如何通過VB處理XML

          1. 首先要引用一個Microsoft XML 隨便選個版本。
          2. 在初始化的時候讀取XML顯示到TXTBOX中,代碼如下:
            '通過2進制流將XML文件讀出來,也可以是其它文件格式
            Private
             Function pstrUpdateView(istrXMLPath As StringAs String
                
            Dim wlngFreeFile As Long
                
            Dim wbytwbytLoadBytes() As Byte
                '獲得一個空閑文件號
                wlngFreeFile 
            = FreeFile
                Open istrXMLPath 
            For Binary As #wlngFreeFile
                
            ReDim wbytLoadBytes(1 To LOF(wlngFreeFile)) As Byte
                
            Get #wlngFreeFile, , wbytLoadBytes
                Close wlngFreeFile
                
                pstrUpdateView 
            = StrConv(wbytLoadBytes, vbUnicode)
            End Function
          3. 裝載XML。傳進去一個XML地址,如果裝載不成功就error,成功則執(zhí)行下一步
            Private Sub fsubLoadXML(istrXMLPath As String)
                
            Set pobjXMLDoc = CreateObject("MSXML2.DOMDocument")
                
            If pobjXMLDoc.Load(istrXMLPath) = False Then
                    
            On Error GoTo LoadXMLErr:
                
            End If
                
                
            On Error GoTo 0
                
            Exit Sub
            LoadXMLErr:
                
            Dim myErr
                
            Set myErr = pobjXMLDoc.parseError
                
            MsgBox ("ERROR:" & myErr.reason)
                
            Set myErr = Nothing
            End Sub
          4. 讀屬性。DOMDocument對象里有2個讀節(jié)點的方法:
            1. selectNodes() 如果根節(jié)點下有多個子節(jié)點就要用這個方法,item定義了第幾個子節(jié)點
            2. selectSingleNode()如果根節(jié)點下只有一個字節(jié)點可以用這個方法

            1. Private Function fstrReadAttr(istrNodes As String, istrAttribute As StringAs String
              On Error GoTo ErrHandle:
                  
              Dim wobjXmlAttr As MSXML2.IXMLDOMAttribute
                  
              '
              '
                  Set wobjXmlAttr = pobjXMLDoc.selectNodes(istrNodes).Item(0).Attributes.getNamedItem(istrAttribute)
                  '
                  Set wobjXmlAttr = pobjXMLDoc.selectSingleNode(istrNodes).Attributes.getNamedItem(istrAttribute)
                  fstrReadAttr 
              = wobjXmlAttr.Text
                  
                  
              'destroy object
                  Set wobjXmlAttr = Nothing
                  
              On Error GoTo 0
                  
              Exit Function
              ErrHandle:
                  
              MsgBox Err.Description
                  
              Set wobjXmlAttr = Nothing
              End Function
          5. 讀節(jié)點。 call fstrReadNode("/test/user") ,參數(shù)是test節(jié)點下的user子節(jié)點
            Private Function fstrReadNode(istrNodes As StringAs String
                
            Dim xNode As MSXML2.IXMLDOMNode
                
            Set xNode = pobjXMLDoc.selectSingleNode(istrNodes)
                fstrReadNode 
            = xNode.Text
                
            Set xNode = Nothing
            End Function
          6. 寫節(jié)點。參數(shù)1:節(jié)點;參數(shù)2:需要寫入的值

            Private Sub fsubWriteNode(istrNodes As String, istrValue As String)
                
            Dim wobjXMLNode As IXMLDOMElement
                
                
            Set wobjXMLNode = pobjXMLDoc.documentElement.selectNodes(istrNodes).Item(0)

                wobjXMLNode.Text 
            = istrValue

                 Set wobjXMLNode = Nothing
            End Sub


          a sample :download


          轉(zhuǎn)自:http://blog.csdn.net/kinytx/

          MSXML 處理 xml 文檔時外部DTD定義的問題(ASP)
          項目中碰到這個問題,所以也貼了出來

          xmlfile = "http://myserver/catalog.xml"
          xslfile 
          = "catalog.xsl"

          ' 創(chuàng)建相關(guān)對象
          Set xslDoc = server.CreateObject("MSXML2.FreeThreadedDOMDocument")
          Set xmlDoc = server.CreateObject("MSXML2.DOMDocument")

          ' 讀取xsl文件
          xsldoc.async = False
          xsldoc.resolveExternals 
          = True
          xsldoc.load server.MapPath(xslfile)
          ' 讀取xml文件
          xmldoc.setProperty "ServerHTTPRequest",True  ' 設(shè)置ServerHTTPRequest 屬性為 True 為了通過http協(xié)議載入xml文檔
          xmldoc.async = False ' 設(shè)置 async屬性為 False 關(guān)閉異步調(diào)用
          xmldoc.resolveExternals = True ' 設(shè)置 resolveExternals 為 True 打開外部DTD分析
          xmldoc.validateOnParse = False ' 設(shè)置 validateOnParse 為 False 允許文檔驗證
          xmldoc.load xmlfile ' 讀取xml文檔
          Do While (xmldoc.ReadyState < 4)  ' 檢查ReadyState狀態(tài)值是否為4 ' 具體數(shù)值定義參見msxml sdk document
             xmldoc.waitForResponse 10 ' 通過waitForResponse方法等待文檔完全讀取完畢 ' 如果為讀取完成,系統(tǒng)暫停10毫秒
          Loop

          ' 轉(zhuǎn)換xml -> html 并輸出文檔
          xmldoc.transformNodeToObject xsldoc,Response

          ' 清空對象
          Set xslt = Nothing
          Set xsldoc = Nothing
          Set xmldoc = Nothing

          posted on 2006-01-19 14:52 瘋流成性 閱讀(5342) 評論(0)  編輯  收藏 所屬分類: VB項目


          只有注冊用戶登錄后才能發(fā)表評論。


          網(wǎng)站導航:
           
          主站蜘蛛池模板: 兴化市| 巴中市| 海南省| 怀集县| 郓城县| 特克斯县| 巢湖市| 西安市| 如东县| 曲阜市| 华池县| 桃园市| 浙江省| 漠河县| 饶平县| 深圳市| 璧山县| 万宁市| 新郑市| 太湖县| 繁峙县| 梁平县| 栖霞市| 瓦房店市| 江西省| 新和县| 井冈山市| 平山县| 房产| 沂源县| 隆尧县| 嘉祥县| 昌江| 木兰县| 荆州市| 临夏市| 贵南县| 友谊县| 青浦区| 宿州市| 江油市|