[心得] 在XML中尋找一個特定的節點

看板Flash作者時間18年前 (2008/04/23 20:53), 編輯推噓6(6010)
留言16則, 3人參與, 最新討論串1/2 (看更多)
演算法簡介: find(節點 , 標籤) { if(節點名稱不是標籤) { if(節點有孩子) 結果節點 = find(孩子節點 , 標籤) if(節點有兄弟) 結果節點 = find(兄弟節點 , 標籤) if(結果節點不是 null) return 結果節點 else return null } else return 節點 } 可以說是用DFS(深度優先搜尋法)的概念 AS程式碼: //找body function find(thisNode , tagName) { var Node:XMLNode; if(thisNode.nodeName != tagName) { if(thisNode.firstChild != null) Node = find(thisNode.firstChild,tagName); if(thisNode.nextSibling != null) Node = find(thisNode.nextSibling,tagName); if(Node != null) return Node; else return null; } else return thisNode; } 實際用法: //建立一XML,並擷取某網站中body部分的資料 var myHTML:XML = new XML(); myHTML.ignoreWhite = true; myHTML.onLoad = function(success) { var myXML:XML = find(this,"body"); } var url = "http://tw.yahoo.com/" myHTML.load(url); 功能: 1.分析HTML,從外部網站擷取資料 2.可以作巢狀擷取 舉例: 1.可以做到網路蜘蛛的功能 (找到 a 標籤,再查他的 href 去 load 找到的 url) 2.如果搜尋的不是節點名稱,而是節點中所有屬性的值 則可能從氣象局擷取某地氣溫資料,或其他網站中的資料 本篇文章重點: 1.HTML可以當成XML來讀取 2.從外部網站擷取資料的方法 -- blog:http://etrex.blogspot.com/ site:http://web.ntust.edu.tw/~B9409041/ -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 122.120.112.85 ※ 編輯: etrexetrex 來自: 122.120.112.85 (04/23 20:53) ※ 編輯: etrexetrex 來自: 122.120.112.85 (04/23 20:54)

04/23 20:57, , 1F
缺點:只會找到一個node
04/23 20:57, 1F

04/23 20:58, , 2F
如果那個html網頁不是巢狀結構的話~~~XD
04/23 20:58, 2F

04/23 21:00, , 3F
只要有一個node 當起點,就能走完所有的node 吧?
04/23 21:00, 3F

04/23 21:01, , 4F
因為他會同時往下跟往旁邊走 不用考慮多個_root問題吧
04/23 21:01, 4F

04/23 21:04, , 5F
我是說html不一定是巢狀結構啊, ex: <b><i>test</b></i>
04/23 21:04, 5F

04/23 21:04, , 6F
這是什麼鬼 這樣的HTML能顯示喔= =?
04/23 21:04, 6F

04/23 21:04, , 7F
還有遇到<!-- -->這種標籤就.....
04/23 21:04, 7F

04/23 21:05, , 8F
可以顯示啊,只是這不符合W3C的標準
04/23 21:05, 8F

04/23 21:05, , 9F
阿 會爆炸嗎? 我沒試過那個
04/23 21:05, 9F

04/23 21:06, , 10F
<!-- 這種註解標籤我也沒試XD
04/23 21:06, 10F

04/23 21:07, , 11F
晚點來試試
04/23 21:07, 11F

04/23 22:16, , 12F
不符合標準巢狀的HTML是有可能出現的 而且遇到<br>的話..
04/23 22:16, 12F

04/23 22:17, , 13F
<br>沒關係,xml可以用單標籤喔,只是要寫成<br/>
04/23 22:17, 13F

04/23 22:20, , 14F
是啊 但是就像巢狀結構一樣 不能期待別人也這樣寫啊
04/23 22:20, 14F

04/23 22:20, , 15F
我上次還特別寫了一個php想把HTML轉成XML..最後放棄 XD
04/23 22:20, 15F

04/23 22:23, , 16F
如果那個網頁是用XML或是XHTML就可以轉了XD
04/23 22:23, 16F
文章代碼(AID): #183p4-hK (Flash)
文章代碼(AID): #183p4-hK (Flash)