【问题标题】:Java Swing HTML parser's methods not working as expectedJava Swing HTML 解析器的方法未按预期工作
【发布时间】:2012-12-05 22:41:30
【问题描述】:

所以我有一个JTextPane 和一个keyListener,并在每次按键后从窗格中获取文本。然后我尝试解析 HTML 标签以使它们具有不同的颜色。

public void handleStartTag(HTML.Tag tag, MutableAttributeSet a, int pos)
{   
    if (tag == HTML.Tag.DIV)
    {
        System.out.println("tag Started:" + tag);
        tagFound = true;
    }
}

public void handleEndTag(HTML.Tag tag, int pos)
{
    if (tag == HTML.Tag.DIV)
    {
        System.out.println("tag Ended:" + tag);
        tagFound = false;
    }
}

问题是当我输入时

<div

即使没有右括号,它也会输出

标签开始:div 标签结束:div

当我关闭标签时不应调用handleEndTag(),例如&lt;/div&gt;,当我像这样正确结束标签时不应该调用handleStartTag()&lt;div&gt;

【问题讨论】:

  • 您能否发布 SSCCE 并描述所需行为与实际行为?
  • AFAIU JVM 会自动关闭尾随元素。但不要推得太远。

标签: java html swing parsing


【解决方案1】:

如果您检查HTMLEditorKit.ParserCallback使用的JavaDoc for DocumentParser

这将为所有有效标签的回调发送消息,以及隐含但未明确指定的标签。

你可以检查一下

对于隐含的标签,AttributeSet 参数的值将是 Boolean.TRUE,用于键 HTMLEditorKit.ParserCallback.IMPLIED。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-08-11
    • 1970-01-01
    • 1970-01-01
    • 2017-12-14
    • 1970-01-01
    • 2023-03-17
    • 2019-04-22
    • 2015-01-28
    相关资源
    最近更新 更多