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

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

        午夜精品一区二区三区成人,中文字幕av一区二区,亚洲AVAV天堂AV在线网阿V,肥臀浪妇太爽了快点再快点,国产网友愉拍精品视频手机,国产精品无码a∨麻豆,久久中文字幕一区二区,a级国产乱理伦片在线观看al
        首頁 新聞 工控搜 論壇 廠商論壇 產品 方案 廠商 人才 文摘 下載 展覽
        首頁 | 培訓研討 | 公司簡介 | 聯系方式 | 公司動態 | 產品 | 應用實例 | 下載 | 文摘 | 誠聘 |
        紫金橋軟件讀寫XML文件

        紫金橋軟件技術有限公司
        收藏本文     查看收藏

        一、概述

        XML又名“可擴展標記語言”,它提供統一的方法來描述和交換獨立于應用程序或供應商的結構化數據。這種統一性使得不同的軟件之間擁有一座通訊橋梁。XML廣泛應用于自動控制領域,因此在使用不同編程語言、組態工具時經常需要解析XML格式文件。本文講述如何使用紫金橋軟件來讀取XML文件。

        二、ObXml組件簡介

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

        ObXml組件用于解析或生成XML文件。使用Load函數載入XML文件或直接創建XML文件后,所有關于文件的修改操作都是針對內存數據的修改,在使用Save函數或SaveAs函數之后才會將修改的結果保存至硬盤。

        每個XML結點以及結點屬性均對應一個整型標識號,標識號是在組件讀取XML(新建XML)后動態生成的,作為執行組件各種操作函數的參數以定位結點或結點屬性。因為標識號是動態生成的,并非XML文件自帶信息,每次使用組件打開(或新建)XML文件時同一結點的標識號可能會不同,因此它只能在運行時臨時獲取并使用,當組件關閉后,這些標識將失去意義。

           組件實現的功能:

           1)讀取已存在的XML文件,遍歷所有結點,讀寫結點名字、結點文本、結點屬性,讀寫聲明語句。

           2)創建新的XML文件并保存。

           注意事項:

           1)無法讀取或寫入XML文件中的注釋語句。

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

        三、工程示例

        制作一個可以讀取XML文件的工程,主畫面包含兩部分:左側為一個樹形控件,用于顯示所有XML結點;右側為一個結點屬性窗口,當點擊樹形控件上的不同結點時,屬性窗口顯示對應結點的所有信息:結點名、結點文本、結點標識、結點路徑、屬性列表,其中屬性列表包含每個屬性的屬性名、屬性文本、屬性標識。效果圖如下:

        1、引入組件

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

        在組態界面打開子圖選擇畫面,在左側選擇“windows控件”一項,如下圖所示:

        點擊右上方菜單“文件->安裝子圖庫”,如下圖所示:

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

        然后在彈出的畫面中輸入名字“XML”,然后點擊“確定”按鈕,如下圖:

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

        2、前期準備

        創建一個窗口,命名為“win_main”。創建內部對象:

        創建一個XML組件,命名為“w_xml”。

        創建一個按鈕,文本改成“讀取”。

        創建一個文本框,命名為“w_editFileName”。

        創建一個樹形控件,命名為“w_tree”。

        完成后的畫面:

        創建窗口,命名為“win_nodeProperty”,用于顯示結點信息,其內部對象如下:

        創建四個文本框,分別命名為“w_edtName”、“w_edtKey”、“w_edtText”、“w_edtPath”。

        創建一個自由報表,命名為“w_frptAttrib”,設置為3列,列名為“屬性名”、“屬性文本”、“屬性key”。若干靜態文本,完成后的畫面如下圖所示:

        3、腳本邏輯

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

        //載入文件:

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

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

        return;

        endif

        //將XML信息顯示在樹形控件上:

        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函數的聲明如下

        fun_ToTree函數體如下:

        //Function name: fun_ToTree

        int nNodeTemp = 0;

        string strNodeTemp = "";

        //設置樹控件結點文本:

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

        //將XML結點標識保存在對應的樹控件結點中:

        #win_tree.SetNodeData(strFatherKey,nNode);

        nNodeTemp = #win_xml.GetFirstChildNode(nNode);

        while nNodeTemp>0 do

        //在樹控件上增加一個子結點:

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

        //遞歸調用:

        fun_ToTree(nNodeTemp,strNodeTemp);

        nNodeTemp = #win_xml.GetNextNode(nNodeTemp);

        endwhile

        這個函數使用遞歸算法遍歷XML結點信息。

        • 進入窗口腳本:

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

        • 樹形控件腳本:

        打開樹形控件屬性畫面,點擊“全局腳本”按鈕,在彈出的畫面中選擇“單擊腳本”,添加如下代碼:

        fun_OnLbtnDown()

        fun_OnLbtnDown()函數體如下:

        int nData = -1;

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

        nData = #win_tree.GetCurSelNodeData();

        //刷新屬性信息窗口:

        #win_nodeProperty.fun_ShowProperty(#win_xml,nData);

        endif

        fun_ShowProperty函數聲明:

        fun_ShowProperty函數體:

        #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);//斜杠作為路徑分隔符

        //向上遍歷生成本結點的路徑名:

        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;

        //生成屬性報表:

        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函數用于生成指定XML結點的屬性信息字符串,其函數聲明如下:

        fun_GetAttribInfo函數體如下:

        //Function name: fun_GetAttribInfo

        string strArrAttribNames[];

        int i = 0;

        string strText = "";

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

        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;

        四、結語

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


         

        狀 態: 離線

        公司簡介
        產品目錄

        公司名稱: 紫金橋軟件技術有限公司
        聯 系 人: 李磊
        電  話: 0459-8151391-808
        傳  真: 0459-8151391-804
        地  址: 大慶市高新區服務外包產業園C-1座817室
        郵  編: 163316
        主  頁:
         
        紫金橋軟件相關文摘:
        跨平臺實時數據庫變量引用導航功能介紹
        跨平臺實時數據庫 如何利用MODBUS仿真軟件測試MODBUS驅動
        紫金橋跨平臺實時數據庫如何實現多屏顯示
        紫金橋跨平臺軟實時數據庫Web服務器和數據服務器分離訪問的配置
        紫金橋跨平臺軟件遠程采集RealInfo6.5
        使用虛擬機做的工程實現跨網Web訪問
        紫金橋軟件Microsoft Office Access 2003的ODBC數據源配置
        紫金橋軟件閘門整體自動化監控系統
        通過紫金橋軟件來提高畫面組態速度
        組態軟件在配套設備中的應用
        紫金橋的關系庫同步工具簡介
        紫金橋組態軟件與歐姆龍PLC以太網通信(FINS命令)——CPU型號-CJ2M-CPU33
        更多紫金橋軟件文摘...
        通過中華工控網在線留言紫金橋軟件技術有限公司:
        用戶名: 密碼: 免費注冊為中華工控網會員
        請留下您的有效聯系方式,以方便我們及時與您聯絡
         
        中華工控網 GKong.com制作發布 廣告聯系
        主站蜘蛛池模板: 蜜臀AⅤ永久无码精品| 干老熟女干老穴干老女人| 中文字幕久区久久中文字幕| 久久精品国产久精国产| 久久免费网站91色网站| 7777精品久久久大香线蕉| 亚洲国产精品综合久久20| 少妇肉欲系列1000篇| 国产午夜精品亚洲精品国产| 亚洲精品国产av成拍色拍个| 国产精品无码a∨麻豆| 国产精品久久久久精品日日| 日韩一区二区三区三级| 婷婷色香五月综合缴缴情香蕉| 午夜短无码| 无码日韩av一区二区三区| 欧美精品视频一区二区三区| 一区二区三区四区自拍偷拍| 久久一日本综合色鬼综合色| 国产午夜视频在线观看| 午夜在线不卡| 欧美国产精品啪啪| 国产av第一次处破| 亚洲国产AⅤ精品一区二区不卡| 日韩人妻无码一区二区三区99 | 国产精品福利午夜久久香蕉 | 国产亚洲精品AA片在线播放天| 性欧美在线| 国产亚洲精品一区二区无| 欧美人与性动交α欧美精品| 日韩人妖精品一区二区av| 成人精品一区日本无码网| 国产成人剧情AV麻豆果冻| 免费人成视频在线| 亚洲免费日韩一区二区| 爱性久久久久久久久| 高清国产一级毛片国语| 天天做天天爱夜夜爽导航| 少妇被无套内谢免费看| 美女无遮挡免费视频网站| 久久精品国产99麻豆蜜月|