国产精品1024永久观看,大尺度欧美暖暖视频在线观看,亚洲宅男精品一区在线观看,欧美日韩一区二区三区视频,2021中文字幕在线观看

  • <option id="fbvk0"></option>
    1. <rt id="fbvk0"><tr id="fbvk0"></tr></rt>
      <center id="fbvk0"><optgroup id="fbvk0"></optgroup></center>
      <center id="fbvk0"></center>

      <li id="fbvk0"><abbr id="fbvk0"><dl id="fbvk0"></dl></abbr></li>

      一種XML解析方法及醫(yī)療病案中自定義XML結(jié)構(gòu)表單實(shí)現(xiàn)方法與流程

      文檔序號(hào):12005824閱讀:217來源:國知局
      一種XML解析方法及醫(yī)療病案中自定義XML結(jié)構(gòu)表單實(shí)現(xiàn)方法與流程
      一種XML解析方法及醫(yī)療病案中自定義XML結(jié)構(gòu)表單實(shí)現(xiàn)方法[技術(shù)領(lǐng)域]本發(fā)明涉及數(shù)據(jù)庫技術(shù),具體是一種XML解析方法以及在Android終端上醫(yī)療病案中自定義XML結(jié)構(gòu)表單的實(shí)現(xiàn)方法,完成了基于醫(yī)療病案的自定義XML結(jié)構(gòu)表單的實(shí)現(xiàn),且將形式各異的醫(yī)療表單需要的XML結(jié)構(gòu)生成方式和XML解析方式統(tǒng)一化。[

      背景技術(shù):
      ]可擴(kuò)展標(biāo)記語言(ExtensibleMarkupLanguage,XML)廣泛用在網(wǎng)絡(luò)服務(wù)、數(shù)據(jù)庫和文件處理等領(lǐng)域。XML具有文檔內(nèi)容和結(jié)構(gòu)完全分離、互操作性強(qiáng)、規(guī)范統(tǒng)一、支持多種編碼和可擴(kuò)展性好等特點(diǎn)。由于XML文檔包括多層嵌套的數(shù)據(jù)結(jié)構(gòu),因此XML解析通常會(huì)比較復(fù)雜。尤其是應(yīng)用到醫(yī)療業(yè)務(wù)領(lǐng)域,往往因?yàn)樯婕暗结t(yī)療業(yè)務(wù)中大量的數(shù)據(jù)和表單,如病人的病史、檢查、化驗(yàn)的表單等,這些表單種類繁多而且形式各異,表單的內(nèi)容都是接收后臺(tái)傳送的XML或jason格式的數(shù)據(jù),然后通過解析獲得,因此不同的表單就對(duì)應(yīng)了不同的XML或jason格式,除此之外每種表單中設(shè)計(jì)的字段也不是始終不變的,可能會(huì)根據(jù)實(shí)際需求表單的樣式會(huì)發(fā)生改變,這種不確定性對(duì)常規(guī)XML解析方法的適用時(shí)會(huì)產(chǎn)生問題。尤其當(dāng)需要在Android系統(tǒng)終端上實(shí)現(xiàn)XML數(shù)據(jù)解析時(shí),常規(guī)XML解析方法有DOM(DocumentObjectModel文檔對(duì)象模型)方式、SAX(SimpleAPIForXML簡易應(yīng)用程序接口)方式和Android自帶的Pull方式。其中DOM解析器是完全加載后才能解析,占用內(nèi)存較多;SAX占用內(nèi)存少,解析器可以隨時(shí)加載隨時(shí)解析,但卻難以回訪。Pull解析和SAX類似,不同的是SAX解析器的工作方式是自動(dòng)將事件推入注冊(cè)的事件處理器進(jìn)行處理,不能控制事件的處理主動(dòng)結(jié)束;而Pull解析器的工作方式為允許應(yīng)用程序代碼主動(dòng)從解析器中獲取事件,正因?yàn)槭侵鲃?dòng)獲取事件,因此可以在滿足了需要的條件后不再獲取事件,結(jié)束解析。三種解析方式各有各自的優(yōu)點(diǎn),其中相對(duì)來說Pull解析最簡單,可根據(jù)實(shí)際需求選擇解析方式。不論何種方式,一般XML數(shù)據(jù)進(jìn)行解析時(shí),需要知道被解析的XML數(shù)據(jù)的各個(gè)標(biāo)簽的名稱,解析過程中判斷解析到的標(biāo)簽名稱和已知名稱是否相同,如相同取出該標(biāo)簽的內(nèi)容,采用此種方式的缺點(diǎn)就是不同的XML數(shù)據(jù)需要編寫不同的解析代碼,工作量很大;其次,如若將XML劃分為相同大小的多個(gè)數(shù)據(jù)塊,然后通過多核處理器的多個(gè)核同時(shí)分別對(duì)多個(gè)數(shù)據(jù)塊進(jìn)行并行的解析處理,會(huì)使得一個(gè)XML元素的內(nèi)容可能分布在不同的塊中,解析程序只能以推測(cè)的方式解析這樣的數(shù)據(jù),此外在并行解析多個(gè)數(shù)據(jù)塊時(shí),需要檢查各個(gè)數(shù)據(jù)塊之間的數(shù)據(jù)依賴關(guān)系,從而導(dǎo)致并解析線程間的頻繁通信,當(dāng)線程等待通信應(yīng)答時(shí),將暫停運(yùn)行或減緩處理速度,從而使得并行處理的效果受到影響。[

      技術(shù)實(shí)現(xiàn)要素:
      ]本發(fā)明的目的是在現(xiàn)有Android終端上自帶的關(guān)于XML數(shù)據(jù)的Pull解析方法的基礎(chǔ)上進(jìn)行改進(jìn),提供一種不需要知道XML數(shù)據(jù)的標(biāo)簽名稱,而只需要一個(gè)通用的XML解析代碼就可解析出不同形式的XML數(shù)據(jù)的方法,以提高XML解析的解析速度,在Android終端上實(shí)現(xiàn)醫(yī)療業(yè)務(wù)。為實(shí)現(xiàn)上述目的,設(shè)計(jì)一種XML解析方法,其特征在于所述解析方法的步驟如下:1)解析模塊讀取調(diào)用外接數(shù)據(jù)庫接口Webservice接口,獲得返回的XML數(shù)據(jù);2)判斷讀取到的XML節(jié)點(diǎn)類型;3)節(jié)點(diǎn)處理操作,定義一個(gè)節(jié)點(diǎn)結(jié)構(gòu)體NodeStruct,包括節(jié)點(diǎn)類型nodeType、節(jié)點(diǎn)名稱nodeName和內(nèi)容類型contentType三個(gè)字符串String類型的私有屬性,并新建一個(gè)表單容器List用來存放NodeStruct類型的對(duì)象,即Lsit<NodeStruct>,在解析過程中每遇到節(jié)點(diǎn)類型都新建立一個(gè)NodeStruct對(duì)象,并根據(jù)節(jié)點(diǎn)類型分別對(duì)三個(gè)私有屬性進(jìn)行賦值;4)把新建并已賦好值的NodeStruct對(duì)象添加到表單容器List中;5)判斷XML數(shù)據(jù)是否讀取完畢,如果判斷到了XML結(jié)束文檔處,執(zhí)行第6個(gè)步驟,否則返回到第1個(gè)步驟,繼續(xù)讀取XML數(shù)據(jù);6)讀取表單容器List中的內(nèi)容并繪制表單,表單上的字段名稱以及表單上字段內(nèi)容的類型都存在List容器中的NodeStruct對(duì)象的私有屬性中,讀取出表單的字段名稱,然后根據(jù)具體的表單樣式采用代碼的形式動(dòng)態(tài)繪制界面。一種用上述XML解析方法實(shí)現(xiàn)醫(yī)療病案中自定義XML結(jié)構(gòu)表單的實(shí)現(xiàn)方法,由XML封裝、XML解析兩部分構(gòu)成,所述XML封裝方法步驟為:1)XML節(jié)點(diǎn)管理模塊,從系統(tǒng)數(shù)據(jù)庫中的節(jié)點(diǎn)表中獲取醫(yī)療病案表單中的字段;XML節(jié)點(diǎn)管理模塊起到管理和維護(hù)表單中用到的所有字段的作用;2)把字段的名稱和各種屬性在pc機(jī)上用圖形化的方式顯示出來;3)用戶在pc機(jī)的圖形界面上選擇表單需要的字段名稱;4)生成含有用戶已選擇的字段的XML模板;5)用第四步生成的XML構(gòu)建外接數(shù)據(jù)庫接口webservice接口;所述XML解析方法步驟為:1)解析模塊讀取調(diào)用外接數(shù)據(jù)庫接口Webservice接口,獲得返回的XML數(shù)據(jù);2)判斷讀取到的XML節(jié)點(diǎn)類型;3)節(jié)點(diǎn)處理操作,定義一個(gè)節(jié)點(diǎn)結(jié)構(gòu)體NodeStruct,包括節(jié)點(diǎn)類型nodeType、節(jié)點(diǎn)名稱nodeName和內(nèi)容類型contentType三個(gè)字符串String類型的私有屬性,并新建一個(gè)表單容器List用來存放NodeStruct類型的對(duì)象,即Lsit<NodeStruct>,在解析過程中每遇到節(jié)點(diǎn)段都新建立一個(gè)NodeStruct對(duì)象,并根據(jù)節(jié)點(diǎn)段類型分別對(duì)三個(gè)私有屬性進(jìn)行賦值;4)把新建并已賦好值的NodeStruct對(duì)象添加到表單容器List中;5)判斷XML數(shù)據(jù)是否讀取完畢,如果判斷到了XML結(jié)束文檔處,執(zhí)行第6個(gè)步驟,否則返回到第1個(gè)步驟,繼續(xù)讀取XML數(shù)據(jù);6)讀取表單容器List中的內(nèi)容并繪制表單,表單上的字段名稱以及表單上字段內(nèi)容的類型都存在List容器中的NodeStruct對(duì)象的私有屬性中,讀取出表單的字段名稱,然后根據(jù)具體的表單樣式采用代碼的形式動(dòng)態(tài)繪制界面。所述每一個(gè)外接數(shù)據(jù)庫接口Webservice接口對(duì)應(yīng)一種表單樣式。所述的節(jié)點(diǎn)類型分為開始標(biāo)簽、文本標(biāo)簽和結(jié)束標(biāo)簽。所述節(jié)點(diǎn)段分為開始段、文本段及結(jié)束段,所述的賦值操作,當(dāng)遇到節(jié)點(diǎn)開始段時(shí),節(jié)點(diǎn)類型nodeType賦值為START,節(jié)點(diǎn)名稱nodeName賦值為解析得到的標(biāo)簽名稱,內(nèi)容類型contentType賦值為解析屬性type得到的內(nèi)容;遇到節(jié)點(diǎn)文本段時(shí),判斷文本段是否有內(nèi)容,若是有則節(jié)點(diǎn)類型nodeType賦值為TEXT,節(jié)點(diǎn)名稱nodeName賦值為解析得到的標(biāo)簽內(nèi)容,否則不做處理;若是遇到節(jié)點(diǎn)結(jié)束段時(shí),節(jié)點(diǎn)類型nodeType賦值為END,節(jié)點(diǎn)名稱nodeName賦值為解析得到的標(biāo)簽名稱。所述的XML解析在Android平臺(tái)下實(shí)現(xiàn),編程語言為java。本發(fā)明提出了一種基于醫(yī)療病案的自定義XML結(jié)構(gòu)表單的生成方法,這種方法可根據(jù)各種表單的需求字段動(dòng)態(tài)生成合適XML結(jié)構(gòu)模板,并解析出需要的字段,在android終端上繪制出形式各異的表單樣式,使用這種方法大大降低了程序員的開發(fā)難度,并且提高了開發(fā)效率。采用此方案前,項(xiàng)目工程大小大概為8M字節(jié)。采用此方案后,項(xiàng)目工程大小為7.06M字節(jié),并且程序的運(yùn)行效率提高了大概10%,因此證明此方案是可行的。[附圖說明]圖1:自定義XML結(jié)構(gòu)表單實(shí)現(xiàn)方法的流程框圖;圖2:XML數(shù)據(jù)中字符串的封裝流程圖;圖3:XML數(shù)據(jù)的解析流程圖;指定圖1為摘要附圖。[具體實(shí)施方式]現(xiàn)結(jié)合附圖及具體實(shí)施例對(duì)本發(fā)明的技術(shù)方案作進(jìn)一步闡述,相信對(duì)本領(lǐng)域技術(shù)人員來說是清楚的。本發(fā)明主要由兩部分構(gòu)成如圖1所示,PC機(jī)上的XML封裝操作和Android終端上的XML解析,XML的封裝主要是根據(jù)用戶選定的XML節(jié)點(diǎn)名稱,動(dòng)態(tài)生成適合各種醫(yī)療病案表單的XML結(jié)構(gòu),XML封裝的結(jié)構(gòu)組成圖如圖2所示;XML解析在Android平臺(tái)下實(shí)現(xiàn),編程語言為java,采用改進(jìn)后的Pull解析方法進(jìn)行。XML封裝方法是利用封裝模塊在PC機(jī)上實(shí)現(xiàn),采用C#語言編程,其方法步驟如圖2所示:1)醫(yī)療系統(tǒng)數(shù)據(jù)庫包括系統(tǒng)數(shù)據(jù)庫和外接的數(shù)據(jù)庫接口兩部分,外接數(shù)據(jù)庫接口可以是醫(yī)院數(shù)據(jù)庫接口或HIS系統(tǒng)的接口等其它醫(yī)療系統(tǒng)接口,該接口用來提供醫(yī)療病案表單需要的節(jié)點(diǎn)名稱。在系統(tǒng)數(shù)據(jù)庫內(nèi)包含節(jié)點(diǎn)表,外接的數(shù)據(jù)庫接口中包含字段,系統(tǒng)數(shù)據(jù)庫節(jié)點(diǎn)表中的節(jié)點(diǎn)名稱字段與外接數(shù)據(jù)庫接口中的相關(guān)字段相對(duì)應(yīng)的。XML節(jié)點(diǎn)管理模塊對(duì)數(shù)據(jù)庫表單中用到的所有字段起到管理和維護(hù)作用,XML節(jié)點(diǎn)管理模塊從系統(tǒng)數(shù)據(jù)庫中的節(jié)點(diǎn)表中獲取醫(yī)療病案表單中的字段;2)把字段的名稱和各種屬性在pc機(jī)上用圖形化的方式顯示出來;3)用戶在pc機(jī)的圖形界面上選擇表單需要的字段名稱;4)生成含有用戶已選擇的字段的XML模板;5)用第四步生成的XML構(gòu)建外接數(shù)據(jù)庫接口webservice接口;XML解析,解析模塊調(diào)用Webservice接口,并對(duì)獲取到的返回?cái)?shù)據(jù)進(jìn)行解析,得到表單的字段名稱,然后根據(jù)表單樣式,動(dòng)態(tài)的用代碼進(jìn)行界面布局,在終端界面上顯示出來。解析是在Android系統(tǒng)終端上實(shí)現(xiàn),Android解析XML數(shù)據(jù)可以采用DOM(DocumentObjectModel文檔對(duì)象模型)方式、SAX(SimpleAPIForXML簡易應(yīng)用程序接口)方式和Android自帶的Pull方式。其中DOM解析器是完全加載后才能解析,占用內(nèi)存較多;SAX占用內(nèi)存少,解析器可以隨時(shí)加載隨時(shí)解析,但卻難以回訪。Pull解析和SAX類似,不同的是SAX解析器的工作方式是自動(dòng)將事件推入注冊(cè)的事件處理器進(jìn)行處理,不能控制事件的處理主動(dòng)結(jié)束;而Pull解析器的工作方式為允許應(yīng)用程序代碼主動(dòng)從解析器中獲取事件,正因?yàn)槭侵鲃?dòng)獲取事件,因此可以在滿足了需要的條件后不再獲取事件,結(jié)束解析。三種解析方式各有各自的優(yōu)點(diǎn),其中相對(duì)來說Pull解析最簡單,可根據(jù)實(shí)際需求選擇解析方式。在這里我們采用Android自帶的Pull解析方式。XML解析方法是利用解析模塊在Android終端平臺(tái)上實(shí)現(xiàn)的,采用java編程語言,其方法步驟如圖3所示:1)解析模塊讀取調(diào)用外接數(shù)據(jù)庫接口Webservice接口,獲得返回的XML數(shù)據(jù);其中每一個(gè)外接數(shù)據(jù)庫接口Webservice接口對(duì)應(yīng)了一種表單樣式。2)判斷讀取到的XML節(jié)點(diǎn)類型;所述的節(jié)點(diǎn)類型分為開始標(biāo)簽、文本標(biāo)簽和結(jié)束標(biāo)簽。以<item>男</item>為例說明,其中<item>為開始標(biāo)簽,<item>標(biāo)簽的內(nèi)容“男”就是文本標(biāo)簽,</item>為結(jié)束標(biāo)簽;3)節(jié)點(diǎn)處理操作,定義一個(gè)節(jié)點(diǎn)結(jié)構(gòu)體NodeStruct,包括節(jié)點(diǎn)類型nodeType、節(jié)點(diǎn)名稱nodeName和內(nèi)容類型contentType三個(gè)字符串String類型的私有屬性,并新建一個(gè)表單容器List用來存放NodeStruct類型的對(duì)象,即Lsit<NodeStruct>,在解析過程中每遇到節(jié)點(diǎn)段都新建立一個(gè)NodeStruct對(duì)象,并根據(jù)節(jié)點(diǎn)段類型分別對(duì)三個(gè)私有屬性進(jìn)行賦值;所述節(jié)點(diǎn)段分為開始段、文本段及結(jié)束段,所述的賦值操作,當(dāng)遇到節(jié)點(diǎn)開始段時(shí),節(jié)點(diǎn)類型nodeType賦值為START,節(jié)點(diǎn)名稱nodeName賦值為解析得到的標(biāo)簽名稱,內(nèi)容類型contentType賦值為解析屬性type得到的內(nèi)容;遇到節(jié)點(diǎn)文本段時(shí),判斷文本段是否有內(nèi)容,若是有則節(jié)點(diǎn)類型nodeType賦值為TEXT,節(jié)點(diǎn)名稱nodeName賦值為解析得到的標(biāo)簽內(nèi)容,否則不做處理;若是遇到節(jié)點(diǎn)結(jié)束段時(shí),節(jié)點(diǎn)類型nodeType賦值為END,節(jié)點(diǎn)名稱nodeName賦值為解析得到的標(biāo)簽名稱。4)把新建并已賦好值的NodeStruct對(duì)象添加到表單容器List中;5)判斷XML數(shù)據(jù)是否讀取完畢,如果判斷到了XML結(jié)束文檔處,執(zhí)行第6個(gè)步驟,否則返回到第1個(gè)步驟,繼續(xù)讀取XML數(shù)據(jù);6)讀取表單容器List中的內(nèi)容并繪制表單,表單上的字段名稱以及表單上字段內(nèi)容的類型都存在List容器中的NodeStruct對(duì)象的私有屬性中,讀取出表單的字段名稱,然后根據(jù)具體的表單樣式采用代碼的形式動(dòng)態(tài)繪制界面。
      當(dāng)前第1頁1 2 3 
      網(wǎng)友詢問留言 已有0條留言
      • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
      1