【问题标题】:How do I change the text of an Element in jsoup?如何更改 jsoup 中元素的文本?
【发布时间】:2020-09-18 09:54:28
【问题描述】:

我正在遍历 HTML 文档并更改元素的文本,但 Jsoup 在尝试更改任何元素的文本时不起作用。我的代码是:

            // URL
            String url = "http://example.com/source.html";

            Document doc = Jsoup.connect(url)
                       .userAgent("Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:25.0) Gecko/20100101 Firefox/25.0")
                       .referrer("http://www.google.com") 
                       .ignoreHttpErrors(true).get();

            // Select all of the elements in the HTML
            Elements eles = doc.body().select("*");
            // For each element
            for (Element ele : eles) {

                String text = ele.ownText();
                System.out.println(text);
                ele.text("newText");

            }

            File htmlFile = new File("output.html");
            PrintWriter pw = new PrintWriter(htmlFile, "UTF-8");
            // Write our translated HTML to the output file
            pw.println(doc);
            pw.close();

我得到的 HTML 正文是:

 <body>
  newText
 </body>

【问题讨论】:

    标签: java html jsoup


    【解决方案1】:

    您正在使用.select("*") 选择文档中的所有元素,结果是您也替换了&lt;body&gt; 的内容,因此其他所有内容都丢失了。尝试更具体地选择元素。

    【讨论】:

    • 我想选择所有这些,以便我猜这部分是正确的。然后,我遍历所有元素,我想更改所有元素的文本。它不应该工作吗?将新文本附加到旧元素的文本实际上是有效的,所以我想这也应该有效。
    • 我真的怀疑你想选择所有元素。如果你真的想要,那么你得到的输出正是我所期望的,因为ele.text("newText") 不只是“添加文本”,而是用这个文本替换给定元素的全部内容。如果您包含输入 HTML 的片段和您期望的确切示例,将会容易得多。
    猜你喜欢
    • 2014-05-25
    • 2011-12-19
    • 2011-05-05
    • 2015-07-05
    • 1970-01-01
    • 1970-01-01
    • 2021-07-28
    • 1970-01-01
    相关资源
    最近更新 更多