我正在扩展HTMLEditorKit.ParserCallback来解析HTML。我在一个重写方法中匹配某个元素类型,如下所示:
@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");
...
在这一行之后,id和clazz总是为null,但我知道有问题的元素包含这些属性。
我该如何检索这些属性?
答案 0 :(得分:2)
MutableAttributeSet使用pre-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类包含许多可以匹配的属性。
(这让我困惑了一段时间,在网上搜索时我没有遇到过这种用法的例子。)