java为什么JDOM的getChild()方法返回null?
我正在做一个关于html文档操作的项目。我想从现有的html文档的正文内容修改成一个新的html。现在我正在使用JDOM。我想在编码中使用body元素。为此,我在编码中使用了getChild(“body”)。但我的程序返回空值。但是我的html文档有一个body元素。作为一名学生,有谁能帮助我了解这个问题吗
如果你能给我指点
编码:
import org.jdom.Document;
import org.jdom.Element;
public static void getBody() {
SAXBuilder builder = new SAXBuilder("org.ccil.cowan.tagsoup.Parser", true);
org.jdom.Document jdomDocument=builder.build("http://www......com");
Element root = jdomDocument.getRootElement();
//It returns null
System.out.println(root.getChild("body"));
}
也请参考这些。。我的html的根目录和子目录打印在控制台中
root.getName():html
SIZE:2
[Element: <head [Namespace: http://www.w3.org/1999/xhtml]/>]
[Element: <body [Namespace: http://www.w3.org/1999/xhtml]/>]
# 1 楼答案
我在你的代码中发现了一些问题: 1) 如果您想通过网络构建远程xml,您应该使用另一个构建方法,该方法接收URL作为输入。实际上,您正在将名为“www……com”的文件解析为xml
2)如果要将html页面解析为xml,必须检查它是否是格式良好的xhtml文档,否则无法将其解析为xml
3)正如我在另一个答案中所说,
root.getChild("body")
返回root的子级,其名称为“body”,没有名称空间。您应该检查名称空间中要查找的元素;如果它有一个限定的命名空间,则必须以以下方式传递:要以简单的方式知道哪个名称空间包含您的元素,您应该使用getChildren方法打印出所有root的子元素:
如果您试图解析一个xhtml,那么可能有名称空间uri
http://www.w3.org/1999/xhtml
。所以你应该这样做: