編程之道

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

          如何通過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,成功則執行下一步
            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個讀節點的方法:
            1. selectNodes() 如果根節點下有多個子節點就要用這個方法,item定義了第幾個子節點
            2. selectSingleNode()如果根節點下只有一個字節點可以用這個方法

            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. 讀節點。 call fstrReadNode("/test/user") ,參數是test節點下的user子節點
            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. 寫節點。參數1:節點;參數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


          轉自:http://blog.csdn.net/kinytx/

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

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

          ' 創建相關對象
          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  ' 設置ServerHTTPRequest 屬性為 True 為了通過http協議載入xml文檔
          xmldoc.async = False ' 設置 async屬性為 False 關閉異步調用
          xmldoc.resolveExternals = True ' 設置 resolveExternals 為 True 打開外部DTD分析
          xmldoc.validateOnParse = False ' 設置 validateOnParse 為 False 允許文檔驗證
          xmldoc.load xmlfile ' 讀取xml文檔
          Do While (xmldoc.ReadyState < 4)  ' 檢查ReadyState狀態值是否為4 ' 具體數值定義參見msxml sdk document
             xmldoc.waitForResponse 10 ' 通過waitForResponse方法等待文檔完全讀取完畢 ' 如果為讀取完成,系統暫停10毫秒
          Loop

          ' 轉換xml -> html 并輸出文檔
          xmldoc.transformNodeToObject xsldoc,Response

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

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


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


          網站導航:
           
          主站蜘蛛池模板: 施甸县| 辰溪县| 体育| 密山市| 奈曼旗| 洛浦县| 乌恰县| 青岛市| 镇安县| 藁城市| 广丰县| 寿光市| 兰考县| 江油市| 沈丘县| 德州市| 荣成市| 百色市| 东海县| 汪清县| 夏河县| 广南县| 淮南市| 平潭县| 乌苏市| 青神县| 海阳市| 新宾| 南城县| 陇南市| 武汉市| 河东区| 肥城市| 珲春市| 图木舒克市| 榆树市| 浠水县| 北流市| 泾川县| 五寨县| 蕉岭县|