2009-11-19 110 views
1

我在擴展HTMLEditorKit.ParserCallback來解析HTML。我在這樣的重寫的方法在某一元素類型匹配:如何使用Swing的HTMLEditorKit.ParserCallback檢索元素的屬性?

@Override 
public void handleStartTag(Tag t, MutableAttributeSet a, int pos) { 
    if (Tag.DIV.equals(t)) { 
     String id = (String) a.getAttribute("id"); 
     String clazz = (String) a.getAttribute("class"); 
     ... 

這條線,標識和clazz中後總是空的,但我知道一個事實,有問題的元素包含了這些屬性。

我該如何檢索這些屬性?

回答

2

MutableAttributeSet使用預Java 5類型安全的枚舉模式來表示鍵集。這意味着即使該屬性具有名稱「class」,只是插入String將不會檢索該屬性的值。相反,使用:

@Override 
public void handleStartTag(Tag t, MutableAttributeSet a, int pos) { 
    if (Tag.DIV.equals(t)) { 
     String id = (String) a.getAttribute(HTML.Attribute.ID); 
     String clazz = (String) a.getAttribute(HTML.Attribute.CLASS); 
     ... 

HTML.Attribute類包含許多可匹配的屬性。

(這讓我困惑了一陣子,在網上搜索時我沒有遇到這種用法的例子)。