繁体   English   中英

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

[英]How to read text from an inputstream, formatted as XML, with a BufferedReader.readLine() method?

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

现在,我尝试使用inputstream读取器逐行读取它:

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">

我的意思是,我不想为文件的用途编写解析器。 您对我如何将其阅读为纯旧文本文件有任何线索吗? 谢谢!

[编辑]:要明确:我想使用br.readLine()读取此文件; 不能使用Java解析器!

在我看来,找不到您的文本文件。 换句话说,我猜想getResourceAsStream返回null ,而这个null值导致您得到NullPointerException。

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

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

我认为您甚至不必走那么远。 一个简单的Google搜索通过其DOM Parser产生了一个很好的例子:

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/

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM