利用dom解析获取文件title时怎样忽略异常获取到title的文本值

松仔来了 2013-01-14 02:37:42
开始做的时候遇到有些文件没有title元素的,程序会报空指针,然后我就catch空指针异常,返回一个空字符串。可是遇到有些文件又会报异常报错,比如
[Fatal Error] index.jsp:1:2: The markup in the document preceding the root element must be well-formed.
Exception in thread "main" org.xml.sax.SAXParseException; systemId: file:/home/lilisong/NetBeansProjects/WebApplication1/web/index.jsp; lineNumber: 1; columnNumber: 2; The markup in the document preceding the root element must be well-formed.
at com.sun.org.apache.xerces.internal.parsers.DOMParser.parse(DOMParser.java:253)
at com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderImpl.parse(DocumentBuilderImpl.java:288)
at javax.xml.parsers.DocumentBuilder.parse(DocumentBuilder.java:205)
at com.bjsxt.test.CreateHtml2_1.getTitle(CreateHtml2_1.java:50)
at com.bjsxt.test.CreateHtml2_1.listFile(CreateHtml2_1.java:28)
at com.bjsxt.test.CreateHtml2_1.listFile(CreateHtml2_1.java:39)
at com.bjsxt.test.CreateHtml2_1.test(CreateHtml2_1.java:72)
at com.bjsxt.test.CreateHtml2_1.main(CreateHtml2_1.java:82)
Java Result: 1

我的代码是
public static String getTitle(File f) throws Exception {
try {
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = factory.newDocumentBuilder();
Document document = builder.parse(f);
Node title_tag = document.getElementsByTagName("title").item(0);
return title_tag.getFirstChild().getTextContent();
} catch (NullPointerException e) {
return "";
}

}
请教的问题如标题,请各位大神给看看
...全文
265 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
oZouBianBian 2013-01-15
  • 打赏
  • 举报
回复
引用 4 楼 songzailaile 的回复:
引用 3 楼 oZouBianBian 的回复:解析之前要先检查文件是不是完整的呀, 你的文件都不完整,当然就别提去找title了 jsp不就是html里面加了java代码么, 还有就是我就只用dom4j做过xml的解析。不知道jsp你还解析来做什么,估计很少要解析jsp吧,html也很少有用dom解析的吧 嗯,我现在估计是知道为什么html不用dom解析了,do……
对于你要从jsp界面里面的文字,要么是固定写死的, 那你的地图也可以写死呀;要么是从数据库里面或者其他文件里面找出来的, 那你做地图的时候为什么就不可以去数据库或者其他文件里面去找呢
松仔来了 2013-01-15
  • 打赏
  • 举报
回复
引用 3 楼 oZouBianBian 的回复:
解析之前要先检查文件是不是完整的呀, 你的文件都不完整,当然就别提去找title了 jsp不就是html里面加了java代码么, 还有就是我就只用dom4j做过xml的解析。不知道jsp你还解析来做什么,估计很少要解析jsp吧,html也很少有用dom解析的吧
嗯,我现在估计是知道为什么html不用dom解析了,dom解析是专门为xml用的,xml是格式严格的文件,而html是格式不严格的文件,所以dom4j解析xml没问题,但解析html时只要html格式有一点不规范都会报错,比如<br/>写成<br>都会报错。 其实我是在做一个网站地图,写一个生成html类型文件的程序,要获取一个目录里的所有html和jsp的title然后都放到一个html文件里,生成一个目录一样的东西。昨天下午就用流的形式,读取所有文件,然后把每个文件的title用删选字符串的方式找出来了。但我想为了获得title,把没个文件都拼一次字符串是不是太浪费资源了。刚开始学,也不咋懂
oZouBianBian 2013-01-14
  • 打赏
  • 举报
回复
解析之前要先检查文件是不是完整的呀, 你的文件都不完整,当然就别提去找title了 jsp不就是html里面加了java代码么, 还有就是我就只用dom4j做过xml的解析。不知道jsp你还解析来做什么,估计很少要解析jsp吧,html也很少有用dom解析的吧
松仔来了 2013-01-14
  • 打赏
  • 举报
回复
引用 1 楼 oZouBianBian 的回复:
异常不是你想忽略就能忽略的哦, 根据你的爆出的异常的第一句话就能看出是你的xml文件格式不对,某个标签没有结束
是呀,我就是想叫它别给我报错报异常,把文件里的title找出来就好,没有title就返回个空。关键是怎么做呀,还有一件事请教您,dom4j只能解析xml和html吗?可以解析jsp吗
oZouBianBian 2013-01-14
  • 打赏
  • 举报
回复
异常不是你想忽略就能忽略的哦, 根据你的爆出的异常的第一句话就能看出是你的xml文件格式不对,某个标签没有结束

62,621

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧