我想逐行解析Java中的XML文件,因为我得到的文件框架与往常有些不同。它不是嵌套的;每个标记都在自己的行中。
XML文件的一部分:
<sentence><flag>3</flag></sentence>
<word><text>Zdravo</text></word>
<phoneme><onephoneme>z</onephoneme></phoneme>
<phoneme><onephoneme>d</onephoneme></phoneme>
<phoneme><onephoneme>r</onephoneme></phoneme>
<phoneme><onephoneme>"a:</onephoneme></phoneme>
<phoneme><onephoneme>v</onephoneme></phoneme>
<phoneme><onephoneme>O</onephoneme></phoneme>
<sentence><flag>0</flag></sentence>
<word><text>moje</text></word>
...我搜索并找到了许多不同的解析XML文件的方法,但它们都扫描了整个文件,我不想这样做,因为我的文件几乎是100 k行,现在(甚至以后)我只需要前800行,所以逐行解析要快得多。我不知道我真正需要多少行预先,但我想数多少次,我到达标签,并停止在一定的计数(现在是17 -这是大约800线)。
我发现的教程:
然后每个句子被分成单词和音素,所以最后我会有3 ArrayLists:标志,单词和音素。
希望我能给你足够的信息。
谢谢。
发布于 2014-07-23 09:31:29
行实际上与XML无关,您可以将所有的XML值为100 K行放在一行中。您需要做的是按解析的元素/节点进行计数。使用SAX解析器,它是基于事件的,它将通知您元素何时开始,何时结束。每当您获得对解析增量计数器感兴趣的元素时,这假设您知道您感兴趣的元素,从您的示例来看,这些元素如下:
<sentence>
<word>
<phoneme>等。
发布于 2014-07-23 09:29:47
Andrew建议使用SAX和StAX,但是如果您的文件非常大,我将使用VTD-XML,它至少比SAX快3倍,而且更加灵活。处理2GB的XML完全不是问题。
发布于 2014-07-23 09:17:20
如果您想逐行读取文件,则与XML无关。只需使用BufferedReader,因为它提供了一个readLine方法。使用一个简单的计数器,您可以检查已经读过多少行,并在达到800标记后退出循环。
https://stackoverflow.com/questions/24906464
复制相似问题