如何将元素添加到手动生成的文档?

时间:2013-05-24 15:51:14

标签: html jsoup

我正在尝试使用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,但没有看到任何类型的工厂或setter方法可以为我生成body元素。

对于JSoup API JavadDoc以外可能有用的资源的建议也是受欢迎的。

1 个答案:

答案 0 :(得分:1)

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

doc.appendElement("body");

Heres'你的完整代码:

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>

至于文档,我相信你已经在那里,他们的官方网站是最好的地方。我还要看看他们的cookbok