簡體   English   中英

Jsoup遍歷DOM樹的問題

[英]Issue with Jsoup Traversing DOM Tree

我正在使用jsoup分析一些HTML源文件。 當我遍歷HTML源代碼時,發現了一些奇怪的東西:

            final HashMap <Node, Integer> idMap = new HashMap <Node, Integer>();
            doc.traverse(new NodeVisitor(){
                @Override
                public void head(Node node, int depth) {
                    int sequentialNodeId = info.sequentialId++;
                    idMap.put(node, sequentialNodeId);                  
                }

                @Override
                public void tail(Node node, int depth) {                    
                    System.out.println(idMap.get(node));                                        
                }
            });

因此,這里我使用idMap存儲節點ID,以便以后在tail()方法中檢索它們。 我沒有使用node.hashCode()因為對於不同的節點有很多重復的哈希碼。 我曾經發布了一個問題,關於這個問題,並jsoup團隊表示,它已得到修復,但它仍然發生在我身上,我不知道是否有事情做與我處理HTML源文件。

我的問題是idMap.get(node)拋出許多空指針。 如果head和tail方法中的節點應該相同,那么為什么會發生這種情況?

我需要使用節點ID來記錄每個節點的DFS順序,以及訪問在第一次訪問該節點時初始化的數據結構,並在最后一次訪問該節點時進行修改。 數據結構對於每個節點都是唯一的。 我不知道是否還有其他方法可以做到這一點。 任何投入將不勝感激。 非常感謝。

嘗試使用最新的Jsoup版本(在撰寫本文時為1.8.3),然后重新測試代碼。 如果仍然無法使用,請在下面發表評論。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM