如何使用BufferedReader.readLine()方法从输入流中读取格式为XML的文本?

时间:2012-02-17 21:20:46

标签: java xml netbeans inputstream

我有一个xml文件,我将其作为资源包含在我的netbeans项目中。

现在,我尝试用输入流阅读器逐行阅读:

static InputStream nudeMap = Main.class.getResourceAsStream("overlay_map_2007.txt");

static BufferedReader br = new BufferedReader(new InputStreamReader(nudeMap,"UTF-8"));

=>这得到了错误:

Exception in thread "Thread-4" java.lang.NullPointerException
    at java.io.Reader.<init>(Reader.java:61)
    at java.io.InputStreamReader.<init>(InputStreamReader.java:80)

我检查了文件的编码,它确实是UTF-8,所以我不认为这是编码问题。我没有这方面的经验,但我怀疑它可能来自文件实际上是xml格式的事实。第一行是:

<?xml version="1.0" encoding="UTF-8"?>
<gexf xmlns:viz="http:///www.gexf.net/1.1draft/viz" version="1.1" xmlns="http://www.gexf.net/1.1draft">

我的观点是,我不想为我使用该文件编写解析器。您是否有任何关于如何将其作为普通旧文本文件阅读的线索,没有错误? THX!

[编辑]:说清楚:我想用br.readLine()读取这个文件;不是Java Parser!

2 个答案:

答案 0 :(得分:1)

在我看来,你的文本文件没有找到。换句话说,我猜测getResourceAsStream正在返回null,这个空值导致你得到的NullPointerException。

项目中的overlay_map_2007.txt文件在哪里?

如果此文件不在“默认”包中,那么您需要“限定”资源名称。例如,如果它位于文件夹com.example.myproject中,则资源名称为com/example/myproject/overlay_map_2007.txt

答案 1 :(得分:0)

我认为你甚至不必走那么远。一个简单的谷歌搜索通过其DOM解析器产生了这个很好的例子:

http://www.mkyong.com/java/how-to-read-xml-file-in-java-dom-parser/

有一个针对DOM的东西,那就是SAX:

http://www.mkyong.com/java/how-to-read-xml-file-in-java-sax-parser/