javax.swing.text.html.HTML 文档按名称获取元素

标签 java html swing parsing dom

我正在寻找通过名称获取元素的方法。我尝试使用 Element.getAttributes.getAttributeNames() 一次迭代一个元素,并迭代每个元素以查找名称,然后用我要查找的名称对其进行检查。直接抓取元素的任何替代方法或优化方法?

最佳答案

这是我用来通过标签名检索元素的方法。对于 mixed-content 元素(例如,subsupbi ),您需要查看“假”content 元素的属性。

/**
 * Returns all elements of a particular tag name.
 *
 * @param tagName The tag name of the elements to return (e.g., HTML.Tag.DIV).
 * @param document The HTML document to find tags in.
 * @return The set of all elements in the HTML document having the specified tag name.
 */
public static Element[] getElementsByTagName(HTML.Tag tagName, HTMLDocument document)
{
    List<Element> elements = new ArrayList<Element>();

    for (ElementIterator iterator = new ElementIterator(document); iterator.next() != null;)
    {
        Element currentEl = iterator.current();

        AttributeSet attributes = currentEl.getAttributes();

        HTML.Tag currentTagName = (HTML.Tag) attributes.getAttribute(StyleConstants.NameAttribute);

        if (currentTagName == tagName)
        {
            elements.add(iterator.current());
        } else if (currentTagName == HTML.Tag.CONTENT) {
            for (Enumeration<?> e = attributes.getAttributeNames(); e.hasMoreElements();)
            {
                if (tagName == e.nextElement())
                {
                    elements.add(iterator.current());
                    break;
                }
            }
        }
    }

    return elements.toArray(new Element[0]);
}

关于javax.swing.text.html.HTML 文档按名称获取元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18065622/

相关文章:

Java解析大型XML文档

java - 接受任何内容并保留签名的方法?

java - Selenium .open ("/");生成了 XHR 500 : Internal Server Error

java - 无法在 JTable 的单个单元格中添加两个按钮

java - 为什么 Retrofit 无法解决 Android 上的“无连接 - 检查互联网连接”问题?

javascript - 位于内容下方的滑动面板?

html - 图像上的链接扩展了图像标签

jquery移动按钮颜色改变

Java:卡住 JFrame 上的组件

Java GridBagLayout 组件定位