[問題] 大型xml沒有根與搜尋如何處理?(已解決)

作者: st1009 (前端攻城師)   2018-05-13 23:44:02
各位大大晚安,不才想請教兩個問題<(_ _)>
我目前希望可以處理一份很巨大的xml,但是我手上的xml檔沒有樹根!
經過測試我發現會報錯QAQQQ
我看到別人的解法好像是先把檔案開啟來,然後寫入樹根?
但是我目前需要動態迭代,因為檔案很大,無法一次存入記憶體,
我試著引用查到的程式碼,我的程式目前長如下網址
http://codepad.org/bPqMyuly
感覺好像不適合用那種open然後加入樹根的方式,不知道版上大大有好建議嘛?
譬如怎麼跟著迭代動態寫入樹根?
我的XML格式如下:
<doc id="13" url="https:XXX" title="XX">
content 1
</doc>
<doc id="15" url="https:XXX" title="XX">
content 2
</doc>
另外想問我希望搜尋文檔中xml的content,然後如果我的keyword有出現在content中,
就回報我content的id,讓我知道哪些content中有出現我的keyword,
我操作如下
先把xml分析出id和content之後,存入MySQL資料庫,
再藉由SELECT id FROM table WHERE content = "%keyword%"
找出哪些文章出現我的關鍵字
這樣子的操作會有問題嘛?譬如MySQL會搜很慢之類的?
如果有問題,我怎樣做比較好?
p.s我的關鍵字都是中文
作者: ThxThx (洗洗睡)   2018-05-14 01:43:00
一行一行讀讀到close tag 就把累積的內容拿去parse
作者: s860134 (s860134)   2018-05-14 12:58:00
你的問題應該是在檔案太大,寫入 sql 很好阿後來網路上有人提示 etree.HTML 就可已爬沒 root 的https://stackoverflow.com/a/23891862你直接當作 html 爬應該是沒什麼差
作者: subi (細雨綿綿細雨)   2018-05-14 20:35:00
http://codepad.org/qw3YwJsx 不知道這樣字是不是你要的我覺得你應該搭配 generator 來寫,可以避免記憶體問題

Links booklink

Contact Us: admin [ a t ] ucptt.com