如何通过SAX解析XML并创建树列表?

问题描述:

我学到了有关Java的SAX解析器教程,现在我需要建立这样的XML文件的树状列表:如何通过SAX解析XML并创建树列表?

<course> 
    <chapter> 
      <title>chapter one of course one</title> 
      <content> .... </content> 
    </chapter> 

    <chapter> 
      <title>chapter two of course one</title> 
      <content> .... </content> 
    </chapter> 
</course> 

,然后我什么来创建数据结构是这样的:

string lessons[][] = { 
     {"chapter one of course one", "chapter two of course one"}, 
     {"chapter one of course two", "chapter two of course two", "chapter tree of course two"}, 
     .... 
     .... 

}

+2

这不是我们编写代码的地方。您需要尝试一下,如果您遇到错误,我们可以提供帮助。如果你已经学习了这个教程,那就好好利用它。 – Guillaume

+0

嗯,我不需要任何代码,我需要一个解决方案来实现它在Java中。我的问题是,当解析逐行读取文档并调用startElement()和character()时,我没有任何方法将项添加到ArrayList >。所以我最初的问题是数据结构,我不知道如何保存数据。 –

ŧ对于您正在查找的数据结构,JDK没有提供现成的支持。你需要的是一个MultimapGuava library提供了这种数据结构。你可以使用该库(我推荐)或者建立自己的。

此外,请确保您read my answerthis SO帖子如果您正在使用SAX阅读元素内容。

JAVA SAX parser split calls to characters()

+0

你的回答今天节省了我的时间。我将我的数据保存到ArrayListMultimap数据结构。 –

在这里你去:THIS是SAX文档阅读,并尝试建立自己的解析器伴侣

想在一个Stack的条款。在startElement()中,您按下并在endElement中弹出()。根据元素标签名称,您可以对堆栈中的内容做些有趣的事情,也可能是您在“全局”上下文中所拥有的内容。

+0

这是这个问题的另一个解决方案,我必须实现它,可能是更好的解决方案,而不是使用MultiMap结构。 –

此代码完全符合你的要求,你只需要调整它就可以输出你想要的JSON结构。

https://github.com/kasmodia/sax-tree-parser