java 板


LINE

※ 引述《jackyeah1213 (frog)》之銘言: : 最近在研究讀取xml的問題 : 是使用dom去呼叫 : 但找到的範例大多都是直接讀取檔案 : ex: : File f=new File("data_10k.xml"); :    DocumentBuilderFactory factory=DocumentBuilderFactory.newInstance(); :    DocumentBuilder builder=factory.newDocumentBuilder(); :    Document doc = builder.parse(f); : NodeList nl = doc.getElementsByTagName("VALUE"); : . : . : . : 想請問如果不是讀取檔案的模式 : 而是直接讀取一個字串 : 要如何修正呢? 這種問題通常要先看 api doc 有哪些方法可以用的 http://docs.oracle.com/javase/1.5.0/docs/api/ javax/xml/parsers/DocumentBuilder.html 所以,我們再來複習一下怎麼查 api 唄:P 查文件你會看到下的 parse 方法: Document parse(File f) Parse the content of the given file as an XML document and return a new DOM Document object. abstract Document parse(InputSource is) Parse the content of the given input source as an XML document and return a new DOM Document object. Document parse(InputStream is) Parse the content of the given InputStream as an XML document and return a new DOM Document object. Document parse(InputStream is, String systemId) Parse the content of the given InputStream as an XML document and return a new DOM Document object. Document parse(String uri) Parse the content of the given URI as an XML document and return a new DOM Document object. ====================================================== 以 File 為參數的情況,你已經在用了,但你想要找其它的方法。 而最後一個是吃一個 String 參數,你試著這麼做,但相信是不能動的。 請看它的說明: ... Parse the content of the given URI as ... 你要一個 uri 簡單說是一個有 xml 的網址, 所以你不能直接填 xml content。 去除了 File 與 String 為參數的 parse 方法, 剩下的部分是有機會滿足你目標的。 先來看第 2 個 parse 方法,它接受一個 InputSource 參數 這時你應該不急不徐地點開 InputSource 的 link http://docs.oracle.com/javase/1.5.0/docs/api/ org/xml/sax/InputSource.html 首先,我們先看看建構子。它讓我們知道要如何建立一個 InputSource InputSource() Zero-argument default constructor. InputSource(InputStream byteStream) Create a new input source with a byte stream. InputSource(Reader characterStream) Create a new input source with a character stream. InputSource(String systemId) Create a new input source with a system identifier. 有 4 個建構子,哪些能滿足你輸入 String Content 的需求呢? 看參數是最後一個,但看說明應該是第 2 與第 3 個有機會。 點開 InputStream 的內容! http://docs.oracle.com/javase/1.5.0/docs/api/ java/io/InputStream.html 看一下它的 Direct Known Subclasses: AudioInputStream, ByteArrayInputStream, FileInputStream, FilterInputStream, InputStream, ObjectInputStream, PipedInputStream, SequenceInputStream, StringBufferInputStream InputStream 是典型的裝飾者模式,簡單說把 OOO 裝飾成 InputStream。 所以 ByteArrayInputStream 就是把 Byte Array 裝飾成 InputStream。 那麼,你就可以將字串轉成 byte[] 放到 ByteArrayInputStream: http://docs.oracle.com/javase/1.5.0/docs/api/ java/io/ByteArrayInputStream.html (在腦中將這個 stack pop) 我們用 String to byte[] 建成 ByteArrayInputStream (在腦中將這個 stack pop) 我們用 ByteArrayInputStream 建成 InputSource (在腦中將這個 stack pop) 我們用 InputSource 建成 Document (不知不覺完成了一回的 BFS) 然後繼續開始操作 DOM 物件。 --



※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 211.72.110.37
1F:推 superlubu:推用心教學 10/26 10:30
2F:推 gmoz:GOOD 10/26 11:16
3F:→ LaPass:推 10/26 11:39







like.gif 您可能會有興趣的文章
icon.png[問題/行為] 貓晚上進房間會不會有憋尿問題
icon.pngRe: [閒聊] 選了錯誤的女孩成為魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一張
icon.png[心得] EMS高領長版毛衣.墨小樓MC1002
icon.png[分享] 丹龍隔熱紙GE55+33+22
icon.png[問題] 清洗洗衣機
icon.png[尋物] 窗台下的空間
icon.png[閒聊] 双極の女神1 木魔爵
icon.png[售車] 新竹 1997 march 1297cc 白色 四門
icon.png[討論] 能從照片感受到攝影者心情嗎
icon.png[狂賀] 賀賀賀賀 賀!島村卯月!總選舉NO.1
icon.png[難過] 羨慕白皮膚的女生
icon.png閱讀文章
icon.png[黑特]
icon.png[問題] SBK S1安裝於安全帽位置
icon.png[分享] 舊woo100絕版開箱!!
icon.pngRe: [無言] 關於小包衛生紙
icon.png[開箱] E5-2683V3 RX480Strix 快睿C1 簡單測試
icon.png[心得] 蒼の海賊龍 地獄 執行者16PT
icon.png[售車] 1999年Virage iO 1.8EXi
icon.png[心得] 挑戰33 LV10 獅子座pt solo
icon.png[閒聊] 手把手教你不被桶之新手主購教學
icon.png[分享] Civic Type R 量產版官方照無預警流出
icon.png[售車] Golf 4 2.0 銀色 自排
icon.png[出售] Graco提籃汽座(有底座)2000元誠可議
icon.png[問題] 請問補牙材質掉了還能再補嗎?(台中半年內
icon.png[問題] 44th 單曲 生寫竟然都給重複的啊啊!
icon.png[心得] 華南紅卡/icash 核卡
icon.png[問題] 拔牙矯正這樣正常嗎
icon.png[贈送] 老莫高業 初業 102年版
icon.png[情報] 三大行動支付 本季掀戰火
icon.png[寶寶] 博客來Amos水蠟筆5/1特價五折
icon.pngRe: [心得] 新鮮人一些面試分享
icon.png[心得] 蒼の海賊龍 地獄 麒麟25PT
icon.pngRe: [閒聊] (君の名は。雷慎入) 君名二創漫畫翻譯
icon.pngRe: [閒聊] OGN中場影片:失蹤人口局 (英文字幕)
icon.png[問題] 台灣大哥大4G訊號差
icon.png[出售] [全國]全新千尋侘草LED燈, 水草

請輸入看板名稱,例如:Tech_Job站內搜尋

TOP