国产精品久久久久久久久软件,国产成人久久久精品二区三区,国产成人无码一区二区三区在线 ,大又大粗又爽又黄少妇毛片,国产精品成人aaaaa网站

首頁(yè) 新聞 工控搜 論壇 廠商論壇 產(chǎn)品 方案 廠商 人才 文摘 下載 展覽
首頁(yè) | 培訓(xùn)研討 | 公司簡(jiǎn)介 | 聯(lián)系方式 | 公司動(dòng)態(tài) | 產(chǎn)品 | 應(yīng)用實(shí)例 | 下載 | 文摘 | 誠(chéng)聘 |
紫金橋軟件讀寫XML文件

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

一、概述

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

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

在紫金橋軟件中,使用ObXml組件可以方便的讀寫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文件自帶信息,每次使用組件打開(或新建)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),讀寫結(jié)點(diǎn)名字、結(jié)點(diǎn)文本、結(jié)點(diǎn)屬性,讀寫聲明語句。

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

   注意事項(xiàng):

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

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

三、工程示例

制作一個(gè)可以讀取XML文件的工程,主畫面包含兩部分:左側(cè)為一個(gè)樹形控件,用于顯示所有XML結(jié)點(diǎn);右側(cè)為一個(gè)結(jié)點(diǎn)屬性窗口,當(dāng)點(diǎn)擊樹形控件上的不同結(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)界面打開子圖選擇畫面,在左側(cè)選擇“windows控件”一項(xiàng),如下圖所示:

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

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

然后在彈出的畫面中輸入名字“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è)樹形控件,命名為“w_tree”。

完成后的畫面:

創(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)文本,完成后的畫面如下圖所示:

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函數(shù)的聲明如下

fun_ToTree函數(shù)體如下:

//Function name: fun_ToTree

int nNodeTemp = 0;

string strNodeTemp = "";

//設(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)的樹控件結(jié)點(diǎn)中:

#win_tree.SetNodeData(strFatherKey,nNode);

nNodeTemp = #win_xml.GetFirstChildNode(nNode);

while nNodeTemp>0 do

//在樹控件上增加一個(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");//打開屬性信息窗口

  • 樹形控件腳本:

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

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é)語

這個(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)文摘:
跨平臺(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ù)器分離訪問的配置
紫金橋跨平臺(tái)軟件遠(yuǎn)程采集RealInfo6.5
使用虛擬機(jī)做的工程實(shí)現(xiàn)跨網(wǎng)Web訪問
紫金橋軟件Microsoft Office Access 2003的ODBC數(shù)據(jù)源配置
紫金橋軟件閘門整體自動(dòng)化監(jiān)控系統(tǒng)
通過紫金橋軟件來提高畫面組態(tài)速度
組態(tài)軟件在配套設(shè)備中的應(yīng)用
紫金橋的關(guān)系庫(kù)同步工具簡(jiǎn)介
紫金橋組態(tài)軟件與歐姆龍PLC以太網(wǎng)通信(FINS命令)——CPU型號(hào)-CJ2M-CPU33
更多紫金橋軟件文摘...
通過中華工控網(wǎng)在線留言紫金橋軟件技術(shù)有限公司:
用戶名: 密碼: 免費(fèi)注冊(cè)為中華工控網(wǎng)會(huì)員
請(qǐng)留下您的有效聯(lián)系方式,以方便我們及時(shí)與您聯(lián)絡(luò)
 
中華工控網(wǎng) GKong.com制作發(fā)布 廣告聯(lián)系