首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Java中XML的逐行解析

Java中XML的逐行解析
EN

Stack Overflow用户
提问于 2014-07-23 09:14:09
回答 5查看 5.2K关注 0票数 3

我想逐行解析Java中的XML文件,因为我得到的文件框架与往常有些不同。它不是嵌套的;每个标记都在自己的行中。

XML文件的一部分:

代码语言:javascript
复制
<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线)。

我发现的教程:

  • 嵌套XML:http://www.mkyong.com/java/how-to-read-xml-file-in-java-dom-parser/
  • 嵌套XML:http://www.javacodegeeks.com/2013/05/parsing-xml-using-dom-sax-and-stax-parser-in-java.html
  • 带有属性的单行XML:用Java读取单个XML行

然后每个句子被分成单词和音素,所以最后我会有3 ArrayLists:标志,单词和音素。

希望我能给你足够的信息。

谢谢。

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2014-07-23 09:31:29

行实际上与XML无关,您可以将所有的XML值为100 K行放在一行中。您需要做的是按解析的元素/节点进行计数。使用SAX解析器,它是基于事件的,它将通知您元素何时开始,何时结束。每当您获得对解析增量计数器感兴趣的元素时,这假设您知道您感兴趣的元素,从您的示例来看,这些元素如下:

代码语言:javascript
复制
<sentence>
<word>
<phoneme>

等。

票数 1
EN

Stack Overflow用户

发布于 2014-07-23 09:29:47

Andrew建议使用SAX和StAX,但是如果您的文件非常大,我将使用VTD-XML,它至少比SAX快3倍,而且更加灵活。处理2GB的XML完全不是问题。

票数 1
EN

Stack Overflow用户

发布于 2014-07-23 09:17:20

如果您想逐行读取文件,则与XML无关。只需使用BufferedReader,因为它提供了一个readLine方法。使用一个简单的计数器,您可以检查已经读过多少行,并在达到800标记后退出循环。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24906464

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档