You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过org.w3c.dom.Element实现JavaFX WebView的inner/outer HTML读写

JavaFX WebView DOM操作获取/设置innerHTML的实现方案

方案1:调用内置实现(最简单)

JavaFX WebView返回的org.w3c.dom.Element实例实际运行时类型为com.sun.webkit.dom.HTMLElementImpl,该类原生提供innerHTML读写方法,直接强转即可调用:

import com.sun.webkit.dom.HTMLElementImpl;
import org.w3c.dom.Element;

// 示例:获取元素innerHTML
Element target = htmlDocImpl.getElementById("test");
String content = ((HTMLElementImpl) target).getInnerHTML();

// 示例:设置元素innerHTML
((HTMLElementImpl) target).setInnerHTML("<span>自定义HTML内容</span>");

如果项目编译规则限制访问com.sun包下的类,改用反射调用即可:

// 反射获取innerHTML
String content = (String) target.getClass().getMethod("getInnerHTML").invoke(target);

// 反射设置innerHTML
target.getClass().getMethod("setInnerHTML", String.class).invoke(target, "<span>自定义HTML内容</span>");

方案2:标准DOM API实现(无内部类依赖)

如果不想依赖平台内部实现,可通过W3C标准DOM接口完成相同需求:

读取innerHTML

import org.w3c.dom.Element;
import org.w3c.dom.ranges.DocumentRange;
import org.w3c.dom.ranges.Range;

public String getInnerHTML(Element element) {
    DocumentRange docRange = (DocumentRange) element.getOwnerDocument();
    Range range = docRange.createRange();
    range.selectNodeContents(element);
    return range.toString();
}

设置innerHTML

import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.html.HTMLDocument;

public void setInnerHTML(Element element, String htmlContent) {
    // 清空原有子节点
    while (element.hasChildNodes()) {
        element.removeChild(element.getFirstChild());
    }
    // 解析HTML片段并挂载
    HTMLDocument doc = (HTMLDocument) element.getOwnerDocument();
    Node fragment = null;
    try {
        // 反射调用createContextualFragment避免内部类依赖
        fragment = (Node) doc.getClass().getMethod("createContextualFragment", String.class)
                .invoke(doc, htmlContent);
    } catch (Exception e) {
        e.printStackTrace();
    }
    if (fragment != null) {
        element.appendChild(fragment);
    }
}

内容的提问来源于stack exchange,提问作者Geoff L

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.07 14:21:03