<style id="7i3y3"></style>

      <sub id="7i3y3"><i id="7i3y3"></i></sub>

        午夜精品一区二区三区成人,中文字幕av一区二区,亚洲AVAV天堂AV在线网阿V,肥臀浪妇太爽了快点再快点,国产网友愉拍精品视频手机,国产精品无码a∨麻豆,久久中文字幕一区二区,a级国产乱理伦片在线观看al
        首頁(yè) 新聞 工控搜 論壇 廠商論壇 產(chǎn)品 方案 廠商 人才 文摘 下載 展覽
        中華工控網(wǎng)首頁(yè)
          P L C | 變頻器與傳動(dòng) | 傳感器 | 現(xiàn)場(chǎng)檢測(cè)儀表 | 工控軟件 | 人機(jī)界面 | 運(yùn)動(dòng)控制
          D C S | 工業(yè)以太網(wǎng) | 現(xiàn)場(chǎng)總線 | 顯示調(diào)節(jié)儀表 | 數(shù)據(jù)采集 | 數(shù)傳測(cè)控 | 工業(yè)安全
          電 源 | 嵌入式系統(tǒng) | PC based | 機(jī)柜箱體殼體 | 低壓電器 | 機(jī)器視覺(jué)
        紫金橋軟件讀寫(xiě)XML文件
        紫金橋軟件技術(shù)有限公司
        收藏本文     查看收藏

        一、概述

        XML又名“可擴(kuò)展標(biāo)記語(yǔ)言”,它提供統(tǒng)一的方法來(lái)描述和交換獨(dú)立于應(yīng)用程序或供應(yīng)商的結(jié)構(gòu)化數(shù)據(jù)。這種統(tǒng)一性使得不同的軟件之間擁有一座通訊橋梁。XML廣泛應(yīng)用于自動(dòng)控制領(lǐng)域,因此在使用不同編程語(yǔ)言、組態(tài)工具時(shí)經(jīng)常需要解析XML格式文件。本文講述如何使用紫金橋軟件來(lái)讀取XML文件。

        二、ObXml組件簡(jiǎn)介

        在紫金橋軟件中,使用ObXml組件可以方便的讀寫(xiě)XML文件。

        ObXml組件用于解析或生成XML文件。使用Load函數(shù)載入XML文件或直接創(chuàng)建XML文件后,所有關(guān)于文件的修改操作都是針對(duì)內(nèi)存數(shù)據(jù)的修改,在使用Save函數(shù)或SaveAs函數(shù)之后才會(huì)將修改的結(jié)果保存至硬盤。

        每個(gè)XML結(jié)點(diǎn)以及結(jié)點(diǎn)屬性均對(duì)應(yīng)一個(gè)整型標(biāo)識(shí)號(hào),標(biāo)識(shí)號(hào)是在組件讀取XML(新建XML)后動(dòng)態(tài)生成的,作為執(zhí)行組件各種操作函數(shù)的參數(shù)以定位結(jié)點(diǎn)或結(jié)點(diǎn)屬性。因?yàn)闃?biāo)識(shí)號(hào)是動(dòng)態(tài)生成的,并非XML文件自帶信息,每次使用組件打開(kāi)(或新建)XML文件時(shí)同一結(jié)點(diǎn)的標(biāo)識(shí)號(hào)可能會(huì)不同,因此它只能在運(yùn)行時(shí)臨時(shí)獲取并使用,當(dāng)組件關(guān)閉后,這些標(biāo)識(shí)將失去意義。

           組件實(shí)現(xiàn)的功能:

           1)讀取已存在的XML文件,遍歷所有結(jié)點(diǎn),讀寫(xiě)結(jié)點(diǎn)名字、結(jié)點(diǎn)文本、結(jié)點(diǎn)屬性,讀寫(xiě)聲明語(yǔ)句。

           2)創(chuàng)建新的XML文件并保存。

           注意事項(xiàng):

           1)無(wú)法讀取或?qū)懭隭ML文件中的注釋語(yǔ)句。

        2)能夠識(shí)別UTF-8、GBK、ANSI編碼格式。無(wú)法識(shí)別Unicode、Unicode big endian編碼格式。

        三、工程示例

        制作一個(gè)可以讀取XML文件的工程,主畫(huà)面包含兩部分:左側(cè)為一個(gè)樹(shù)形控件,用于顯示所有XML結(jié)點(diǎn);右側(cè)為一個(gè)結(jié)點(diǎn)屬性窗口,當(dāng)點(diǎn)擊樹(shù)形控件上的不同結(jié)點(diǎn)時(shí),屬性窗口顯示對(duì)應(yīng)結(jié)點(diǎn)的所有信息:結(jié)點(diǎn)名、結(jié)點(diǎn)文本、結(jié)點(diǎn)標(biāo)識(shí)、結(jié)點(diǎn)路徑、屬性列表,其中屬性列表包含每個(gè)屬性的屬性名、屬性文本、屬性標(biāo)識(shí)。效果圖如下:

        1、引入組件

        如果在子圖中已存在該組件,可以忽略此步驟,直接進(jìn)入下一步。

        在組態(tài)界面打開(kāi)子圖選擇畫(huà)面,在左側(cè)選擇“windows控件”一項(xiàng),如下圖所示:

        點(diǎn)擊右上方菜單“文件->安裝子圖庫(kù)”,如下圖所示:

        在彈出的文件選擇對(duì)話框中找到紫金橋安裝目錄下的Wizard文件夾,并選擇“ObXml.dll”文件,然后點(diǎn)擊“打開(kāi)”按鈕。

        然后在彈出的畫(huà)面中輸入名字“XML”,然后點(diǎn)擊“確定”按鈕,如下圖:

        這樣,XML組件就可以使用了。

        2、前期準(zhǔn)備

        創(chuàng)建一個(gè)窗口,命名為“win_main”。創(chuàng)建內(nèi)部對(duì)象:

        創(chuàng)建一個(gè)XML組件,命名為“w_xml”。

        創(chuàng)建一個(gè)按鈕,文本改成“讀取”。

        創(chuàng)建一個(gè)文本框,命名為“w_editFileName”。

        創(chuàng)建一個(gè)樹(shù)形控件,命名為“w_tree”。

        完成后的畫(huà)面:

        創(chuàng)建窗口,命名為“win_nodeProperty”,用于顯示結(jié)點(diǎn)信息,其內(nèi)部對(duì)象如下:

        創(chuàng)建四個(gè)文本框,分別命名為“w_edtName”、“w_edtKey”、“w_edtText”、“w_edtPath”。

        創(chuàng)建一個(gè)自由報(bào)表,命名為“w_frptAttrib”,設(shè)置為3列,列名為“屬性名”、“屬性文本”、“屬性key”。若干靜態(tài)文本,完成后的畫(huà)面如下圖所示:

        3、腳本邏輯

        • “讀取”按鈕中的腳本如下

        //載入文件:

        if !#win_xml.Load(#w_edtFileName.Text) then

        MsgBox("讀取文件失敗!");

        return;

        endif

        //將XML信息顯示在樹(shù)形控件上:

        int nRoot = #win_xml.GetRootNode();

        string strKey = "";

        #win_tree.DeleteAllNode();

        if nRoot>0 then

        strKey = #win_tree.AddSubItemTail("","");

        fun_ToTree(nRoot,strKey);

        endif

        • fun_ToTree函數(shù)的聲明如下

        fun_ToTree函數(shù)體如下:

        //Function name: fun_ToTree

        int nNodeTemp = 0;

        string strNodeTemp = "";

        //設(shè)置樹(shù)控件結(jié)點(diǎn)文本:

        #win_tree.SetNodeTxt(strFatherKey, #win_xml.GetNodeName(nNode) + " (" + fun_GetAttribInfo(nNode) + ")");

        //將XML結(jié)點(diǎn)標(biāo)識(shí)保存在對(duì)應(yīng)的樹(shù)控件結(jié)點(diǎn)中:

        #win_tree.SetNodeData(strFatherKey,nNode);

        nNodeTemp = #win_xml.GetFirstChildNode(nNode);

        while nNodeTemp>0 do

        //在樹(shù)控件上增加一個(gè)子結(jié)點(diǎn):

        strNodeTemp = #win_tree.AddSubItemTail(strFatherKey,"");

        //遞歸調(diào)用:

        fun_ToTree(nNodeTemp,strNodeTemp);

        nNodeTemp = #win_xml.GetNextNode(nNodeTemp);

        endwhile

        這個(gè)函數(shù)使用遞歸算法遍歷XML結(jié)點(diǎn)信息。

        • 進(jìn)入窗口腳本:

        OpenChild("win_nodeProperty");//打開(kāi)屬性信息窗口

        • 樹(shù)形控件腳本:

        打開(kāi)樹(shù)形控件屬性畫(huà)面,點(diǎn)擊“全局腳本”按鈕,在彈出的畫(huà)面中選擇“單擊腳本”,添加如下代碼:

        fun_OnLbtnDown()

        fun_OnLbtnDown()函數(shù)體如下:

        int nData = -1;

        if #win_tree.GetCurSelNodeKey()<>"" then

        nData = #win_tree.GetCurSelNodeData();

        //刷新屬性信息窗口:

        #win_nodeProperty.fun_ShowProperty(#win_xml,nData);

        endif

        fun_ShowProperty函數(shù)聲明:

        fun_ShowProperty函數(shù)體:

        #w_edtKey.Val = nNode;

        #w_edtName.Text = #pXml.GetNodeName(nNode);

        #w_edtText.Text = #pXml.GetNodeText(nNode);

        string strPath = "";

        int nNodeTemp = 0;

        string strS = AscToChar(47);//斜杠作為路徑分隔符

        //向上遍歷生成本結(jié)點(diǎn)的路徑名:

        nNodeTemp = nNode;

        strPath = #pXml.GetNodeName(nNode);

        while nNodeTemp>0 do

        nNodeTemp = #pXml.GetParentNode(nNodeTemp);

        strPath = #pXml.GetNodeName(nNodeTemp) + strS + strPath;

        endwhile

        #w_edtPath.Text = strPath;

        //生成屬性報(bào)表:

        string strArrAttrinNames[];

        int i = 0;

        #w_frptAttrib.DelTailRow(#w_frptAttrib.RowCount());

        #pXml.GetAttibNames(nNode,strArrAttrinNames);

        #w_frptAttrib.AddRow(strArrAttrinNames.GetCount());

        for i=0 to strArrAttrinNames.GetCount()

        #w_frptAttrib.SetRowHeight(i+1,40);

        #w_frptAttrib.SetTxt(1,i+1,strArrAttrinNames[i]);

        #w_frptAttrib.SetTxt(2,i+1,#pXml.GetAttribTextEx(nNode,"",strArrAttrinNames[i]));

        #w_frptAttrib.SetVal(3,i+1,#pXml.GetAttrib(nNode,"",strArrAttrinNames[i]));

        next

        #w_frptAttrib.SetInputFmtEdit(1,1,#w_frptAttrib.ColCount(),#w_frptAttrib.RowCount(),4);

        其中fun_GetAttribInfo函數(shù)用于生成指定XML結(jié)點(diǎn)的屬性信息字符串,其函數(shù)聲明如下:

        fun_GetAttribInfo函數(shù)體如下:

        //Function name: fun_GetAttribInfo

        string strArrAttribNames[];

        int i = 0;

        string strText = "";

        string strS = AscToChar(34);//雙引號(hào)作為分隔符

        if nNodeKey>0 then

        #win_xml.GetAttibNames(nNodeKey,strArrAttribNames);

        for i=0 to strArrAttribNames.GetCount()

        strText = strText + " " + strArrAttribNames[i] + "="

        + strS + #win_xml.GetAttribTextEx(nNodeKey,"",strArrAttribNames[i]) + strS;

        next

        strText = StrTrimLeft(strText);

        endif

        RETURN strText;

        四、結(jié)語(yǔ)

        這個(gè)示例演示了如何使用ObXml組件讀取XML文件信息,如果想修改XML文件則可以調(diào)用ObXml組件中的相應(yīng)函數(shù),例如:bool SetRoot(string name,string text)用于設(shè)置或新建根結(jié)點(diǎn);bool SetNodeName(int NodeKey,string NewName)用于設(shè)置結(jié)點(diǎn)名;bool SetAttrib(int NodeKey, string name, string Text)用于設(shè)置結(jié)點(diǎn)屬性;bool Save()用于保存文件。


         

        狀 態(tài): 離線

        公司簡(jiǎn)介
        產(chǎn)品目錄

        公司名稱: 紫金橋軟件技術(shù)有限公司
        聯(lián) 系 人: 李磊
        電  話: 0459-8151391-808
        傳  真: 0459-8151391-804
        地  址: 大慶市高新區(qū)服務(wù)外包產(chǎn)業(yè)園C-1座817室
        郵  編: 163316
        主  頁(yè):
         
        該廠商相關(guān)技術(shù)文摘:
        跨平臺(tái)實(shí)時(shí)數(shù)據(jù)庫(kù)變量引用導(dǎo)航功能介紹
        跨平臺(tái)實(shí)時(shí)數(shù)據(jù)庫(kù) 如何利用MODBUS仿真軟件測(cè)試MODBUS驅(qū)動(dòng)
        紫金橋跨平臺(tái)實(shí)時(shí)數(shù)據(jù)庫(kù)如何實(shí)現(xiàn)多屏顯示
        紫金橋跨平臺(tái)軟實(shí)時(shí)數(shù)據(jù)庫(kù)Web服務(wù)器和數(shù)據(jù)服務(wù)器分離訪問(wèn)的配置
        紫金橋跨平臺(tái)軟件遠(yuǎn)程采集RealInfo6.5
        使用虛擬機(jī)做的工程實(shí)現(xiàn)跨網(wǎng)Web訪問(wèn)
        紫金橋軟件Microsoft Office Access 2003的ODBC數(shù)據(jù)源配置
        紫金橋軟件閘門整體自動(dòng)化監(jiān)控系統(tǒng)
        通過(guò)紫金橋軟件來(lái)提高畫(huà)面組態(tài)速度
        組態(tài)軟件在配套設(shè)備中的應(yīng)用
        紫金橋的關(guān)系庫(kù)同步工具簡(jiǎn)介
        紫金橋組態(tài)軟件與歐姆龍PLC以太網(wǎng)通信(FINS命令)——CPU型號(hào)-CJ2M-CPU33
        更多文摘...
        立即發(fā)送詢問(wèn)信息在線聯(lián)系該技術(shù)文摘廠商:
        用戶名: 密碼: 免費(fèi)注冊(cè)為中華工控網(wǎng)會(huì)員
        請(qǐng)留下您的有效聯(lián)系方式,以方便我們及時(shí)與您聯(lián)絡(luò)

        關(guān)于我們 | 聯(lián)系我們 | 廣告服務(wù) | 本站動(dòng)態(tài) | 友情鏈接 | 法律聲明 | 不良信息舉報(bào)
        工控網(wǎng)客服熱線:0755-86369299
        版權(quán)所有 中華工控網(wǎng) Copyright©2022 Gkong.com, All Rights Reserved

        主站蜘蛛池模板: 亚洲av成人区国产精品| 久久精品无码一区二区无码| 亚洲人成网站18禁止无码| 国产精品国产精品国产专区| 亚洲大尺度一区二区av| 人妻有码av中文字幕久久琪| 日韩精品一区二区三区激| 国产美女免费永久无遮挡| 超碰国产一区二区三区 | 国产成人亚洲无码淙合青草| 另类专区一区二区三区| 成人一区二区不卡国产| 欧美大屁股喷潮水xxxx| 人妻少妇邻居少妇好多水在线| 欧美XXXX黑人又粗又长| 男人av天堂专区| 久久国产精品波多野结衣| 国产亚洲精品第一综合另类无码无遮挡又大又爽又黄的视频 | 99国产精品自在自在久久| 国产粉嫩学生高清专区麻豆| 无码人妻斩一区二区三区| 国产成人黄色自拍小视频| 樱桃视频影院在线播放| 久久伊99综合婷婷久久伊| 最近中文国语字幕在线播放| 亚洲国产精品成人综合久| 久青草视频在线观看免费| 精品视频在线观自拍自拍| 国产激情一区二区三区午夜 | 日本无码欧美一区精品久久| 国产精品视频一区二区不卡| 国产精品一区二区三区卡| 国产成人精品1024免费下载| 亚洲精品福利一区二区三区蜜桃| 97se综合| 成人国产精品免费网站| 亚州AV无码一区东京热久久| 国产久热精品无码激情| 国产精品自拍中文字幕| 色综合色狠狠天天综合网| 亚洲av中文乱码一区二|