基于dom和xml路徑語言的智能變電站scd文件解析方法
【專利摘要】本發(fā)明涉及一種基于DOM和XML路徑語言的智能變電站SCD文件解析方法,其特征在于:步驟S01:通過在DOM?API中,將SCD文檔中的數(shù)據(jù)以樹的形式展現(xiàn)出來;步驟S02:通過從根節(jié)點(diǎn)開始的遍歷,訪問到樹中的任意節(jié)點(diǎn);步驟S03:通過XMLPathLanguage技術(shù)查找需要的節(jié)點(diǎn)集,再對節(jié)點(diǎn)集進(jìn)行處理,以解析智能變電站的虛端子、虛端子連接關(guān)系和四遙。本發(fā)明利用XMLPathLanguage技術(shù),先直接查找需要的節(jié)點(diǎn)集,然后再對節(jié)點(diǎn)集進(jìn)行處理,避免了直接對所有節(jié)點(diǎn)進(jìn)行訪問過濾操作,簡化了程序,且大幅提高了數(shù)據(jù)處理效率。
【專利說明】基于DOM和XML路徑語言的智能變電站SCD文件解析方法
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明涉及智能變電站技術(shù),特別是基于D0M和XML Path Language的智能變電 站SCD文件解析方法。
【背景技術(shù)】
[0002] 現(xiàn)有智能變電站S⑶文件解析技術(shù),是基于TinyXML解析工具進(jìn)行解析的。 由 TinyXML 讀取 SCD 文件建成一棵 D0M 樹,該 D0M 樹米用 firstchild - nextsibling tree實現(xiàn)。在TinyXML中,每個節(jié)點(diǎn)均保存該節(jié)點(diǎn)的first child(第一個子節(jié)點(diǎn))、last child(最后一個子節(jié)點(diǎn))、next sibling(下一個相鄰節(jié)點(diǎn))、previous sibling(前一個 相鄰節(jié)點(diǎn))、parent (父節(jié)點(diǎn))這5個相關(guān)的節(jié)點(diǎn)指針,從而建起便于遍歷的整棵樹結(jié)構(gòu)。 該出自郭健生、吳文宣、王云茂、梁曼舒、張華輝.基于TinyXML的智能變電站S⑶文件 的解析·電力與電工· 2011年9月·第31卷第3期。
[0003] 現(xiàn)有智能變電站SCD文件解析技術(shù),需要添加第三方工具使用起來比較麻煩,而 且提取信息的時候,二次開發(fā)比較麻煩執(zhí)行效率低。
【發(fā)明內(nèi)容】
[0004] 有鑒于此,本發(fā)明的目的是提供一種基于D0M和XML Path Language的智能變電 站SCD文件解析方法,避免了直接對所有節(jié)點(diǎn)進(jìn)行訪問過濾操作,簡化了程序,且大幅提高 了數(shù)據(jù)處理效率。
[0005] 本發(fā)明采用以下方案實現(xiàn):一種基于D0M和XML路徑語言的智能變電站SCD文件 解析方法,其特征在于:步驟S01 :通過在DOM API中,將S⑶文檔中的數(shù)據(jù)以樹的形式展 現(xiàn)出來; 步驟S02 :通過從根節(jié)點(diǎn)開始的遍歷,訪問到樹中的任意節(jié)點(diǎn); 步驟S03 :通過XML Path Language技術(shù)查找需要的節(jié)點(diǎn)集,再對節(jié)點(diǎn)集進(jìn)行處理,以 解析智能變電站的虛端子、虛端子連接關(guān)系和四遙。
[0006] 在本發(fā)明一實施例中,所述步驟S01中將SCD文檔中的數(shù)據(jù)以樹的形式展現(xiàn)出來 是采用C #語言,需添加 X M L頭文件;用LoadXmlFile (S⑶)函數(shù)加載S⑶文件,即可在內(nèi) 存中形成一個D0M樹。
[0007] 在本發(fā)明一實施例中,所述步驟S02S實現(xiàn)的方式:查找一個XML文檔的根節(jié)點(diǎn)、按 照給出的標(biāo)簽名查找出相應(yīng)的元素、獲得給出節(jié)點(diǎn)的所有子節(jié)點(diǎn)、獲得給出節(jié)點(diǎn)的父節(jié)點(diǎn)、 獲得一個元素的標(biāo)簽名、獲得一個元素的相關(guān)聯(lián)數(shù)據(jù)以及獲得一個元素的值。
[0008] 在本發(fā)明一實施例中,所述步驟S03中,通過XML Path Language技術(shù)查找需要的 節(jié)點(diǎn)集是利用SelectNode (Xpath,namespace)函數(shù)查找特點(diǎn)命名空間的節(jié)點(diǎn)集。
[0009] 在本發(fā)明一實施例中,所述利用SelectNode (Xpath,namespace)函數(shù)查找特點(diǎn)命 名空間的節(jié)點(diǎn)集常用的功能有:查找當(dāng)前節(jié)點(diǎn)的全部子節(jié)點(diǎn)、按照給定的標(biāo)簽確定節(jié)點(diǎn),并 查出此節(jié)點(diǎn)的所有的父節(jié)點(diǎn)、按照給定的屬性確定節(jié)點(diǎn),并查找出此節(jié)點(diǎn)的第η個節(jié)點(diǎn)和 獲得所有不具有指定屬性的節(jié)點(diǎn)。
[0010] 在本發(fā)明一實施例中,所述步驟S03后還包括輸出匹配的參考目錄reference,所 述的參考目錄為一表格,表格的第一列為數(shù)據(jù)集名稱,第二列為名稱為PL2201B的IED的 reference,第四列為reference的注釋,第五列為IED的中文名稱,第十列為IED的型號。
[0011] 本發(fā)明利用XML Path Language技術(shù),先直接查找需要的節(jié)點(diǎn)集,然后再對節(jié)點(diǎn)集 進(jìn)行處理,避免了直接對所有節(jié)點(diǎn)進(jìn)行訪問過濾操作,簡化了程序,且大幅提高了數(shù)據(jù)處理 效率。
【專利附圖】
【附圖說明】
[0012] 圖1是本發(fā)明方法流程簡要示意圖。
【具體實施方式】
[0013] 為使本發(fā)明的上述目的、特征和優(yōu)點(diǎn)能夠更為明顯易懂,下面結(jié)合附圖對本發(fā)明 的【具體實施方式】做詳細(xì)的說明。
[0014] 在以下描述中闡述了具體細(xì)節(jié)以便于充分理解本發(fā)明。但是本發(fā)明能夠以多種不 同于在此描述的其它方式來實施,本領(lǐng)域技術(shù)人員可以在不違背本發(fā)明內(nèi)涵的情況下做類 似推廣。因此本發(fā)明不受下面公開的【具體實施方式】的限制。
[0015] 如圖1所示,本實施例提供一種基于D0M和XML路徑語言(XML Path Language, Xpath)的智能變電站S⑶文件解析方法,其特征在于:步驟SOI :通過在DOM API中,將S⑶ 文檔中的數(shù)據(jù)以樹的形式展現(xiàn)出來; 步驟S02 :通過從根節(jié)點(diǎn)開始的遍歷,訪問到樹中的任意節(jié)點(diǎn); 步驟S03 :通過XML Path Language技術(shù)查找需要的節(jié)點(diǎn)集,再對節(jié)點(diǎn)集進(jìn)行處理,以 解析智能變電站的虛端子、虛端子連接關(guān)系和四遙。
[0016] 為了更好的實現(xiàn)樹的建立,本實施例中,所述步驟S01中將SCD文檔中的數(shù)據(jù)以 樹的形式展現(xiàn)出來是采用c #語言,需添加 XM L頭文件;用LoadXmlFile(S⑶)函數(shù)加載 S⑶文件,即可在內(nèi)存中形成一個D0M樹。
[0017] 在本發(fā)明一實施例中,所述步驟S02S實現(xiàn)的方式:查找一個XML文檔的根節(jié)點(diǎn)、按 照給出的標(biāo)簽名查找出相應(yīng)的元素、獲得給出節(jié)點(diǎn)的所有子節(jié)點(diǎn)、獲得給出節(jié)點(diǎn)的父節(jié)點(diǎn)、 獲得一個元素的標(biāo)簽名、獲得一個元素的相關(guān)聯(lián)數(shù)據(jù)以及獲得一個元素的值。
[0018] 在本發(fā)明一實施例中,所述步驟S03中,通過XML Path Language技術(shù)查找需要的 節(jié)點(diǎn)集是利用SelectNode (Xpath,namespace)函數(shù)查找特點(diǎn)命名空間的節(jié)點(diǎn)集。
[0019] 在本發(fā)明一實施例中,所述利用SelectNode (Xpath,namespace)函數(shù)查找特點(diǎn)命 名空間的節(jié)點(diǎn)集常用的功能有:查找當(dāng)前節(jié)點(diǎn)的全部子節(jié)點(diǎn)、按照給定的標(biāo)簽確定節(jié)點(diǎn),并 查出此節(jié)點(diǎn)的所有的父節(jié)點(diǎn)、按照給定的屬性確定節(jié)點(diǎn),并查找出此節(jié)點(diǎn)的第η個節(jié)點(diǎn)和 獲得所有不具有指定屬性的節(jié)點(diǎn)。
[0020] 請參見表1,在本發(fā)明一實施例中,所述步驟S03后還包括輸出匹配的參考目 錄reference,所述的參考目錄為一表格,表格的第一列為數(shù)據(jù)集名稱,第二列為名稱為 PL2201B的IED的reference,第四列為reference的注釋,第五列為IED的中文名稱,第十 列為IED的型號。
【權(quán)利要求】
1. 一種基于DOM和XML路徑語言的智能變電站SCD文件解析方法,其特征在于:步驟 S01 :通過在DOM API中,將S⑶文檔中的數(shù)據(jù)以樹的形式展現(xiàn)出來; 步驟S02 :通過從根節(jié)點(diǎn)開始的遍歷,訪問到樹中的任意節(jié)點(diǎn); 步驟S03 :通過XML Path Language技術(shù)查找需要的節(jié)點(diǎn)集,再對節(jié)點(diǎn)集進(jìn)行處理,以 解析智能變電站的虛端子、虛端子連接關(guān)系和四遙。
2. 根據(jù)權(quán)利要求1所述的基于D0M和XML路徑語言的智能變電站SCD文件解析方法, 其特征在于:所述步驟S01中將SCD文檔中的數(shù)據(jù)以樹的形式展現(xiàn)出來是采用C #語言,需 添加 XML頭文件;用LoadXmlFile(S⑶)函數(shù)加載S⑶文件,即可在內(nèi)存中形成一個D0M 樹。
3. 根據(jù)權(quán)利要求1所述的基于D0M和XML路徑語言的智能變電站SCD文件解析方法, 其特征在于:所述步驟S02S實現(xiàn)的方式:查找一個XML文檔的根節(jié)點(diǎn)、按照給出的標(biāo)簽名 查找出相應(yīng)的元素、獲得給出節(jié)點(diǎn)的所有子節(jié)點(diǎn)、獲得給出節(jié)點(diǎn)的父節(jié)點(diǎn)、獲得一個元素的 標(biāo)簽名、獲得一個元素的相關(guān)聯(lián)數(shù)據(jù)以及獲得一個元素的值。
4. 根據(jù)權(quán)利要求1所述的基于D0M和XML路徑語言的智能變電站SCD文件解析方 法,其特征在于:所述步驟S03中,通過XML Path Language技術(shù)查找需要的節(jié)點(diǎn)集是利用 SelectNode (Xpath,namespace)函數(shù)查找特點(diǎn)命名空間的節(jié)點(diǎn)集。
5. 根據(jù)權(quán)利要求4所述的基于D0M和XML路徑語言的智能變電站SCD文件解析方法, 其特征在于:所述利用SelectNode (Xpath,namespace)函數(shù)查找特點(diǎn)命名空間的節(jié)點(diǎn)集常 用的功能有:查找當(dāng)前節(jié)點(diǎn)的全部子節(jié)點(diǎn)、按照給定的標(biāo)簽確定節(jié)點(diǎn),并查出此節(jié)點(diǎn)的所有 的父節(jié)點(diǎn)、按照給定的屬性確定節(jié)點(diǎn),并查找出此節(jié)點(diǎn)的第η個節(jié)點(diǎn)和獲得所有不具有指 定屬性的節(jié)點(diǎn)。
6. 根據(jù)權(quán)利要求1所述的基于D0M和XML路徑語言的智能變電站SCD文件解析方法, 其特征在于:所述步驟S03后還包括輸出匹配的參考目錄reference,所述的參考目錄為一 表格,表格的第一列為數(shù)據(jù)集名稱,第二列為名稱為PL2201B的IED的reference,第四列為 reference的注釋,第五列為IED的中文名稱,第十列為IED的型號。
【文檔編號】G06F17/30GK104112015SQ201410343891
【公開日】2014年10月22日 申請日期:2014年7月19日 優(yōu)先權(quán)日:2014年7月19日
【發(fā)明者】李功新, 王永明, 林國賢, 林鵬程, 陳大鳳, 張豐, 朱菁, 郭碧媛, 高秋鋒, 謝東方, 鄒寶欽, 郭飛云 申請人:國家電網(wǎng)公司, 國網(wǎng)福建省電力有限公司, 國網(wǎng)福建省電力有限公司福州供電公司, 國網(wǎng)福建省電力有限公司管理培訓(xùn)中心, 廈門億力吉奧信息科技有限公司