今天的工作很簡單,基本與目前開發的專案無關,主要是將乙個xml檔案解析,提取內容拼接成sql語句。
難點在於裡面的層級比較多,如果靠以下的語句一層一層的讀取,將巢狀多層for迴圈,影響效率,且容易讀取出錯。
//讀取外層entity
element elementrootelement =
(element) entityrootnode;
nodelist entityroot = elementrootelement.
getelementsbytagname
("entity");
for(
int j =
0; j < entityroot.
getlength()
; j++
)
後來想出來的辦法是將要解析的節點所有從上級節點開始將其讀取封裝到list中,再解析。
如下:
/**
* 讀取指定目錄下的所有entity
** @return 將讀取到的entity儲存到list中,返回集合
*/private list
getallentity}}
}return nodelists;
}
對節點集合進行操作
for
(nodelist entity : nodelists)
}
以上該種***的辦法被嘲笑了。經過指點使用了xpath讀取絕對路徑的節點。
documentbuilde***ctory dbf = documentbuilde***ctory.
newinstance()
;documentbuilder db = dbf.
newdocumentbuilder()
;//將xml檔案讀到document
document doc = db.
parse
(filepath + filename)
;element root = doc.
getdocumentelement()
;xpath xpath = xpathfactory.
newinstance()
.newxpath()
;//注意,中間的三個點省略僅為展示用,實際要詳細寫出中間的路徑
nodelist nodes =
(nodelist)xpath.
evaluate
(, root, xpathconstants.nodeset)
;for
(int i =
0, j = nodes.
getlength()
; i < j; i++
)
反思一下,目前不足依舊是自己對一些介面、工具類不了解,書看得少了。要多學習,學習才會進步,才能超過目前能對我進行指導的前輩。
以及今天遇到了乙個問題,本來不是使用document工廠類進行解析,因為這種方法比較占用記憶體。匯入了dom4j的jar包準備使用這個外掛程式,解析速度快,效率高。然而遇到了部分功能與gradle7.0不相容的問題,目前無法解決。先記下來,以後解決。
MSXML生成以及解析XML檔案
由於最近工作用到xml解析,因此看了一些關於xml的知識,找了很多範例,不過並不是那麼有效或者說可以編譯的通過。因此自己便從乙份從網上拷貝過來的 進行了修改和嘗試,中間出現的問題修改,就有了下面的一篇文章,程式 直接可以拷過去執行 基本不需要什麼修改,如果出現一些問題,看程式開始出的一點關於引入af...
Android學習 XML檔案解析
主要內容 1 什麼是sax sax,全稱 api for xml,既是指一種介面,也是指乙個軟體包。作為介面,sax是事件驅動型xml解析的乙個標準介面。2 sax基本原理 sax的工作原理簡單的說就是對文件進行順序掃瞄,當掃瞄到文件的開始與結束 元素的開始與結束 文件結束等地方時通知事件處理函式,...
python學習心得(2) xml解析
import xml.etree.elementtree as ettree et.parse country data.xml root tree.getroot root et.fromstring country data as string 用法 root.findall xpath 語法解...