• <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>
    • 軟件測試技術
    • 軟件測試博客
    • 軟件測試視頻
    • 開源軟件測試技術
    • 軟件測試論壇
    • 軟件測試沙龍
    • 軟件測試資料下載
    • 軟件測試雜志
    • 軟件測試人才招聘
      暫時沒有公告

    字號: | 推薦給好友 上一篇 | 下一篇

    使用Visual Basic操縱XML文檔

    發布: 2007-7-14 20:28 | 作者: 佚名    | 來源: 網絡轉載     | 查看: 20次 | 進入軟件測試論壇討論

    領測軟件測試網 對于XML文檔,插入、修改、檢索等數據操作工作可以通過一個XML解析器及其列舉的一系列對象來完成。 Microsoft的XML解析器駐留在名為msxml.dll的動態鏈接庫文件中。因為msxml是一個COM對象,所以可以在任何兼容ActiveX的環境中使用它,如在VB和 ASP中。本文介紹在Visual Basic中操縱XML文檔的具體方法。  

    裝載XML文檔  
    新建一個VB Standard EXE工程項目。在Form1中添加一個CommandButton控件,將其Name和Caption屬性分別設為cmdLoad和Load XML。為了使用msxml解析器,必須事先設置工程項目對msxml.dll的引用。選擇Project菜單的 References命令,選中Microsoft XML, version 2.0或更高版本。將下列代碼加入 cmdLoad_Click事件:  
    Option Explicit
    Dim xml As DOMDocument
    Private Sub cmdLoad_Click()
    Set xml = New DOMDocument
    Call xml.Load(App.Path & “flight.xml")
    ' flight.xml為描述航班信息的XML文檔
    End Sub

    運行該程序,點擊Load XML按鈕即可裝載XML文檔。載入的XML文檔包含一個按照樹狀結構排列的節點對象集合,頂層節點或根節點是 documentElement。每個節點都有一組屬性和方法,每個節點可以包含一個或多個子節點,當然也可以不包含任何節點。必須先取得對根節點的引用才能操縱XML文檔。在 cmdLoad_Click事件代碼后添加下列代碼:  

    Dim root As IXMLDOMElement
    Set root = xml.documentElement

    遍歷節點集合  
    可以使用Visual Basic的For Each...Next循環結構在節點對象集合中循環。在cmdLoad_Click事件代碼后添加下列代碼:  
    Dim node As IXMLDOMNode
    For Each node In root.childNodes
    Debug.Print node.Text
    Next

    運行后點擊Load XML按鈕,將會在Immediate窗口中看到如下輸出結果:  

    2000年10月15日  
    北京 首都國際 香港 赤邋角 中國國際航空公司 波音公司  
    B747 13:00 15:55  
    上海 浦東 法蘭克福 美茵 塔什干 尤日內 漢莎航空公司 空中客車工業公司  
    A330 21:45 01:45  

    注意,每個節點的Text屬性不僅包含自身的屬性值,還包含其下屬所有子節點的Text屬性值。一般情況下,不會同時操作所有的節點?梢允褂 selectNodes方法取得對一個特定的節點子集的引用,selectNodes方法返回一個 IXMLDOMNodeList對象。在cmdLoad_Click事件代碼后添加下列代碼:  

    Dim flightNodes As IXMLDOMNodeList
    Set flightNodes = root.selectNodes(“航班")
    For Each node In flightNodes
    Debug.Print node.selectSingleNode
    (“離站時間").Text & “——"  
    &node.selectSingleNode (“到站時間").Text
    Next

    這段代碼使用selectNodes方法選擇根節點下所有的“航班”節點,然后使用selectSingleNode方法選擇“航班”節點下的“離站時間”和“到站時間”,讀取并打印它們的Text屬性值。  

    可以使用childNodes集合以遞歸的方式層次化顯示XML 文檔的內容。  

    首先,在Form1中聲明一個子過程PrettyPrint。  

    Public Sub PrettyPrint(node As IXMLDOMNode,
    Optional tabLevel As Integer=0)
    Dim childNode As IXMLDOMNode
    If node.nodeName<>vbNullStrin  
    And node.nodeName < >“#text" Then
    Debug.PrintString(tabLevel,Chr$(9))
    &“< "&node.nodeName&“ >"
    End If
    If node.hasChildNodes Then
    For Each childNode In node.childNodes
    Call PrettyPrint(childNode,tabLevel+1)
    Next
    Else
    Debug.PrintString(tabLevel+1,Chr$(9))&node.Text
    End If
    If node.nodeName< >vbNullString And node.nodeName
    < >“#text" Then
    Debug.PrintString
    (tabLevel,Chr$(9))&“< /"&node.nodeName&“ >"
    End If
    End Sub

    然后在Form1中加入第2個CommandButton控件,將其 Name和Caption屬性分別設為cmdPrint和Print。將下列代碼加入事件cmdPrint_Click中:  

    Private Sub cmdPrint_Click()
    If Not xml Is Nothing Then
    Call PrettyPrint
    (xml.documentElement)
    End If
    End Sub

    運行程序。首先點擊Load XML按鈕加載flight.xml,然后點擊Print按鈕。在Immediate窗口中可以看到層次分明、易于閱讀的輸出結果。子過程 PrettyPrint在documentElement的子節點中循環,打印每個節點的nodeName屬性值,而每個子節點又遞歸調用PrettyPrint。XML文檔內各節點內在的相似性是XML最具吸引力的特性,每個子節點都與其父節點有著相同的屬性和方法(盡管各自的內容通常不同),這就使得為同一文檔中的所有或部分節點編寫某種規則變得相對簡單。  

    修改節點內容  
    如同修改數據庫中的記錄一樣,也可以修改XML文檔中節點的內容。下列代碼修改了flight.xml文檔中“發布日期”節點的Text屬性值:  
    Set node = root.selectSingleNode(“發布日期")
    If Not node Is Nothing Then
    node.Text = “2000年10月20日"
    End If

    修改了文檔內容之后,可以使用Save方法保存修改后的文檔。Save方法可以將XML文檔保存為文件、數據流或ASP的Response對象。Save方法的用法如下:  

    xml.save App.Path & “flightupdated.xml"

    將上面兩段代碼添加在cmdLoad_Click事件中,運行程序。點擊Load XML按鈕,在程序工作目錄中會增加一個新文件flightupdated.xml。在IE5 中打開該文件,可以看到“發布日期”標記的文本已經被改為“2000年10月20日”。  

    在實際應用中,XML可以被用作數據傳輸格式、可搜索數據庫、可定制的數據存儲方式和顯示信息的數據源(需要XSL或如VB這樣的編程語言的幫助)。因為msxml是一個COM對象,所以可以在ASP頁中使用它的實例,然后方便地使用VBScript或JScript編程來操縱它。 

    延伸閱讀

    文章來源于領測軟件測試網 http://www.kjueaiud.com/


    關于領測軟件測試網 | 領測軟件測試網合作伙伴 | 廣告服務 | 投稿指南 | 聯系我們 | 網站地圖 | 友情鏈接
    版權所有(C) 2003-2010 TestAge(領測軟件測試網)|領測國際科技(北京)有限公司|軟件測試工程師培訓網 All Rights Reserved
    北京市海淀區中關村南大街9號北京理工科技大廈1402室 京ICP備10010545號-5
    技術支持和業務聯系:info@testage.com.cn 電話:010-51297073

    軟件測試 | 領測國際ISTQBISTQB官網TMMiTMMi認證國際軟件測試工程師認證領測軟件測試網

    老湿亚洲永久精品ww47香蕉图片_日韩欧美中文字幕北美法律_国产AV永久无码天堂影院_久久婷婷综合色丁香五月

  • <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>