亚洲爆乳成AV人在线视菜奈实_欧美一进一出抽搐大尺度视频 _日本十八禁免费看污网站_国产一区二区怡红院_6080YY新视觉影院_蜜臀AV无码人妻精品_成人影院YY111111在线_成人欧美一区二区三区1314_少妇饥渴偷公乱A级无码

首頁 新聞 工控搜 論壇 廠商論壇 產品 方案 廠商 人才 文摘 下載 展覽
首頁 | 培訓研討 | 公司簡介 | 聯系方式 | 公司動態 | 產品 | 應用實例 | 下載 | 文摘 | 誠聘 |
紫金橋軟件讀寫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制作發布 廣告聯系
国产XXXX色视频在线观看| 舔吮着她的乳尖小说| 日韩一区二区无码视频| 熟女少妇精品一区二区| 无码精品视频一区二区三区| 亚洲AV乱码一区二区三区| 少妇人妻系列无码专区视频| 无码YY4800亚洲私人影院| 亚洲 春色 另类 小说| 亚洲国产精品久久久久蜜桃噜噜| 亚洲中文久久久久久精品| 中国性猛交ⅩXXX免费看| CSGO大姐姐AWP多少钱| 成人午夜免费无码福利片| 国产精品爱久久久久久久小说| 国产亚洲无线码一区二区| 精品亚洲国产成人小电影| 六个人玩我一个人| 欧美丰满美乳XXⅩ高潮| 日本狂喷奶水在线播放212| 人妻少妇乱孑伦无码专区蜜柚| 色婷婷久久综合中文久久蜜桃AV| 无码精品人妻一区二区三区在线| 亚洲丰满少妇自摸| 在线精品免费视频无码的| JAPANESE55丰满成熟| 懂色av 春色 色欲| 国产偷国产偷亚洲清高孕妇| 久久99精品久久久久久蜜芽| 免费少妇A级毛片| 日产精品1区2区3区| 无码一区二区三区视频| 亚洲乱亚洲乱妇无码麻豆| 中文字幕人妻成人综合永久| 拔萝卜电视剧高清免费| 国产精品国产三级国产专不| 精品国内自产拍在线观看| 美女夫妻内射潮视频| 人善交XUANWEN200| 无码专区—VA亚洲V天堂| 亚洲日韩V无码中文字幕| 18禁裸乳无遮挡免费网站| 成年午夜免费韩国做受| 国产乱色国产精品免费视频 | 末成年女A∨片一区二区 | 亚洲AV综合色区无码一区| 伊人久久精品一区二区三区| WWW爱射网站AVCOM| 国产好爽…又高潮了毛片| 精品欧美H无遮挡在线看中文| 免费无码不卡视频在线观看| 日日躁狠狠躁死你H| 亚洲AV无码片在线观看| 亚洲国产精品久久久久久无码| 中文字幕无码毛片免费看| 成人无码免费一区二区三区| 国产午夜精华无码网站| 开心久久婷婷综合中文字幕| 人人爽人人爽人人片AV| 性猛交ⅩXXX富婆video| 一本到12不卡视频在线DVD| 阿姨呀咿呀啊咿呀咿呀 | 亚洲AV无码成人精品区蜜桃| 又色又爽又黄又无遮挡网站| 成人AV在线网址| 国内精品伊人久久久影视| 免费光看午夜请高视频| 色婷婷综合中文久久一本| 亚洲春色CAMELTOE一区| 69堂人成无码免费视频果冻传媒| 妇女性内射冈站HDWWWOOO| 精品国产免费人成网站| 欧美高清FREEXXXX性| 天天躁日日躁狠狠躁AV麻豆| 亚洲欧美成人久久综合中文网| A级毛片毛片免费观看久潮喷| 国产精品99无码一区二蜜桃| 久久久久亚洲AV无码尤物黑人| 人人做人人爽人人爱| 亚洲AV无码乱码在线观看裸奔| 最新国产精品拍自在线播放| 公侵犯人妻一区二区三区四区| 久久97人妻无码一区二区三区| 欧洲无人区卡一卡二 | 最新国产精品久久精品| 公侵犯人妻一区二区三区免费| 久久99这里只有是精品6| 人妻少妇aB又紧又爽精品视频| 羞羞漫画十八禁啪啪漫画免费 | 高潮喷奶水在线播放视频| 精品亚洲AV无码喷奶水A漫画| 欧洲女人牲交视频免费| 亚洲AV成人无码精品网站| 4444亚洲人成无码网在线观看| 国产成人无码A区在线观看导航| 久久久久亚洲精品中文字幕 | 亚洲欧美精品水蜜桃| А√在线天堂官网| 国模少妇一区二区三区咪咕| 女人私密紧致手术视频| 无码人妻毛片丰滿熟婦区毛片色欲 | 中国孕妇变态孕交XXXX| 国产96在线 | 亚洲| 久久久久AV无码免费网| 日韩AV无码精品人妻系列| 亚洲精品无码AⅤ片桃花岛| XXXX性BBBB欧美| 国内精品自国内精品自线| 欧美日韩精品SUV| 我妽让我满足她啪啪| 在线观看国产精品乱码APP| 国产成人剧情AV麻豆映画| 邻居一晚让我高潮3次正常吗| 体验区试看120秒十八禁| 与亲女洗澡伦了东北| 国产产无码乱码精品久久鸭| 巨爆乳无码视频在线观看| 四虎影视成人永久免费观看视频| 一区二区AV在线| 国产成人精品优优AV| 老熟女另类XXX精品视频| 无码成人精品区在线观看| 中文字幕一区二区三区日韩精品 | 蜜桃AV少妇久久久久久高潮不断| 婷婷五月深爱憿情网六月综合| 中国西西大胆女人裸体艺术 | 情侣过夜的男生会忍住吗| 亚洲AV无码专区国产乱码在线观 | 精品国产福利在线观看| 日本丰满妇人成熟免费中文字幕| 亚洲乱码无码永久不卡在线| 成熟丰满熟妇高潮XXXXX视频| 久久精品人成免费| 熟妇av一区二区| 宅男66LU国产在线观看| 国产精品视频一区二区三区四| 女人脱精光让人桶爽了| 亚洲AV无码国产精品色午| 被多个男人调教奶头玩奶头| 久久99精品久久久久久久久久| 色哟哟最新在线观看入口| 在线播放亚洲第一字幕| 国产乱人伦偷精品视频不卡 | 美女内射毛片在线看免费人动物| 无码人妻精品一区二区蜜桃视频| 97色精品视频在线观看| 黑人GAY大长雕TUBE| 日韩免费一区二区三区高清| 夜夜爽8888免费视频| 国产精品久久久久久婷婷| 欧美成人看片一区二区三区尤物| 亚洲AV永久无码精品网站色欲| 草草影院精品一区二区三区 | 亚洲日韩亚洲另类激情文学一| 粉嫩呦福利视频导航大全| 麻豆熟妇人妻XXXXXX| 性中国妓女毛茸茸视频| 被部长灌醉后强行侵犯| 久久人人爽人人爽人人片DVD | 日韩人妻无码系列专区| 影音先锋亚洲AV少妇熟女| 国产美女被遭强高潮网站免费| 人曾交互MOUSE农场| 亚洲中文字幕AV无码区| 国产精品VA在线观看无码| 欧美日韩免费专区在线| 亚洲欧美综合一区二区三区| 国产成人AV区一区二区三| 欧美精品AⅤ一区二区三区| 亚洲欧美韩国综合色| 国产成人AV一区二区三区无码| 欧美VA亚洲VA在线观看| 亚洲欧美综合精品AⅤ一区二区| 国产成人精品人人做人人爽 | 老熟妇一区二区三区啪啪| 亚洲AV成人一区二区三区不卡| 成人免费无码大片A毛片| 噜噜私人影片在线看片| 亚洲AV无码不卡在线播放| 俄罗斯卖CSGO的网站| 男人强撕开奶罩揉捏我奶头视频 | 亚洲AV一本岛在线播放| 短篇公交车高H肉辣全集目录| 免费无遮挡无码永久在线观看视频| 亚洲AV中文无码4区| 公车掀起老师裙子进入在线| 欧美成天堂网地址| 亚洲熟女综合一区二区三区| 国产乱了真实在线观看| 日出水了特别黄的视频| 重生后我抛弃了负心公主| 精品无码中文字幕不卡| 无码人妻精品一区二区三区蜜桃91| 把腿张开老子臊烂h视频| 乱人伦人妻中文字幕无码91九 | 无码中文人妻在线三区| 超碰97人人做人人爱2020| 免费无码AV片在线观看网站| 亚洲欧美日韩综合久久| 国产精品无码一区二区三区 |