包子的秘密 2015-07-16 08:47 采纳率: 0%
浏览 3672
已结题

PowerBuilder9.0 如何使用PBDOM读取XML文件,并将其显示在TreeView中

PowerBuilder9.0 如何使用PBDOM读取XML文件,并将其显示在TreeView中

  • 写回答

4条回答 默认 最新

  • oyljerry 2015-07-16 09:32
    关注
    OLEObject   lobj_dom
    OLEObject       lole_domnodelist,lole_domcurnode                    
    string as_xml,ls_nodevalue,ls_nodename
    long ll_catalog,ll_activities,ll_activity
    integer li_return
    boolean lb_return
    string ls_id, ls_author, ls_title, ls_genre, ls_price, ls_publish_date, ls_description
    
    lobj_dom                 = CREATE OLEObject
    li_return = lobj_dom.ConnectToNewObject ("Msxml2.DOMDocument.3.0")
    IF      li_return <> 0 THEN
            MessageBox ("Connection Error", "Unable to connect to the OLE object.~r~n~r~nError code = '" + String(li_return) + "'", Exclamation!, OK!)
              Return
    END IF
    
    lobj_dom.Async              = FALSE
    lobj_dom.ValidateonParse    = TRUE
    
    lb_return = lobj_dom.loadxml(as_xml)
    
    If lobj_dom.parseError.ErrorCode <> 0  then
        Messagebox('',string( lobj_dom.parseError.reason ))
        return
    end if
    
    lole_domnodelist = lobj_dom.getElementsByTagName("catalog")
    lole_domcurnode = lole_domnodelist.nextNode
    
    // Solution 1
    /* 
    for ll_catalog = 0 to lole_domcurnode.childNodes.Length -1
            ls_id = lole_domcurnode.childNodes(ll_catalog).getattribute("id")
            ls_author = lole_domcurnode.childNodes(ll_catalog).childNodes.Item(0).text      
            ls_title = lole_domcurnode.childNodes(ll_catalog).childNodes.Item(1).text       
            ls_genre = lole_domcurnode.childNodes(ll_catalog).childNodes.Item(2).text       
            ls_price = lole_domcurnode.childNodes(ll_catalog).childNodes.Item(3).text               
            ls_publish_date = lole_domcurnode.childNodes(ll_catalog).childNodes.Item(4).text        
            ls_description = lole_domcurnode.childNodes(ll_catalog).childNodes.Item(5).text             
            Messagebox(string(ll_catalog),ls_id + '~r~n' + ls_author + '~r~n' + ls_title + '~r~n' + ls_genre + '~r~n' + ls_price + '~r~n' + ls_publish_date + '~r~n' + ls_description)
    Next
    */
    
    // Solution 2
    
    for ll_catalog = 0 to lole_domcurnode.childNodes.Length -1
            ls_id = lole_domcurnode.childNodes(ll_catalog).getattribute("id")   
            ll_activities = lole_domcurnode.childNodes(ll_catalog).childNodes.length - 1
            For ll_activity = 0 to ll_activities
                ls_nodename  = lole_domcurnode.childNodes(ll_catalog).childnodes.Item(ll_activity).nodeName
                ls_nodevalue = lole_domcurnode.childNodes(ll_catalog).childNodes.Item(ll_activity).text 
                Choose Case ls_nodename
                    Case 'author'
                        ls_author = ls_nodevalue
                    Case 'title'                    
                        ls_title = ls_nodevalue
                    Case 'genre'
                        ls_genre = ls_nodevalue
                    Case 'price'
                        ls_price = ls_nodevalue
                    Case 'publish_date'
                        ls_publish_date = ls_nodevalue
                    Case 'description'
                        ls_description = ls_nodevalue
                End Choose
            Next
            Messagebox(string(ll_catalog),ls_id + '~r~n' + ls_author + '~r~n' + ls_title + '~r~n' + ls_genre + '~r~n' + ls_price + '~r~n' + ls_publish_date + '~r~n' + ls_description)      
    Next
    
    
    评论

报告相同问题?

悬赏问题

  • ¥20 sub地址DHCP问题
  • ¥15 delta降尺度计算的一些细节,有偿
  • ¥15 Arduino红外遥控代码有问题
  • ¥15 数值计算离散正交多项式
  • ¥30 数值计算均差系数编程
  • ¥15 redis-full-check比较 两个集群的数据出错
  • ¥15 Matlab编程问题
  • ¥15 训练的多模态特征融合模型准确度很低怎么办
  • ¥15 kylin启动报错log4j类冲突
  • ¥15 超声波模块测距控制点灯,灯的闪烁很不稳定,经过调试发现测的距离偏大