0

我正在尝试使用 JSoup 从无到有生成 HTML,即不解析文件,而是生成 HTML 输出以便在对象中显示数据。我是 JSoup 的新手,一直在寻找一些关于如何使用它来生成 HTML 的示例,但没有为这个特定任务找到太多有用的内容,所以我一直在修修补补,但收效甚微。这是一些[非工作]代码:

package jsouptest;  

import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;  

public class JSoupTest {  

    public static void main(String[] args) {  
        Document doc = new Document("");  

        Element headline = doc.body().appendElement("h1").text("Some text");
        Element pTag = doc.body().appendElement("p").text("some text ...");
        Element span = pTag.prependElement("span").text("MoarTxt");
    }

}  

这一行:

Element headline = doc.body().appendElement("h1").text("Some text");  

抛出一个NullPointerException. 通过一些试验和错误,我相信我已经确定问题是在doc.body()任何地方都没有定义。我假设(显然,错误地)一个新实例化的对象Document会带有一个空的主体。然而,情况似乎并非如此。我不知道是否需要实例化一个新的 body 元素。我已经阅读了Document该类的 javadoc,但没有看到任何可以为我生成 body 元素的工厂或 setter 方法。

也欢迎对JSoup API JavadDoc之外的可能有用的资源提出建议。

4

1 回答 1

1

要以最简单的形式将元素附加<body>到新创建的文档,请使用:

doc.appendElement("body");

这是您的完整代码:

public static void main(String[] args) {  
    Document doc = new Document("");
    doc.appendElement("body");

    Element headline = doc.body().appendElement("h1").text("Some text");
    Element pTag = doc.body().appendElement("p").text("some text ...");
    Element span = pTag.prependElement("span").text("MoarTxt");

    System.out.println(doc);
}

输出:

<body>
 <h1>Some text</h1>
 <p><span>MoarTxt</span>some text ...</p>
</body>

至于文档,我相信你已经在那里,他们的官方网站是最好的地方。我也想看看他们的食谱

于 2013-05-25T23:08:46.810 回答