2009-11-19 111 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类包含许多可匹配的属性。

(这让我困惑了一阵子,在网上搜索时我没有遇到这种用法的例子)。