2013-05-19 45 views
0

我想使用Java从头到尾读取XML。但是,我不想使用递归函数,因为我希望能够跳转到不同的元素并从该位置开始读取。Java XML从上到下读取XML文件

我已经尝试过使用getParent()indexOf()方法(下面的所有三个库都有这些方法)来做到这一点,但它变得非常混乱,主要是因为方法不区分属性和元素。

我确定必须有一个简单的方法来做到这一点,但在尝试dom4j,jdomxom后,我仍然没有找到解决方案。

[编辑]更多信息:

我的朋友想做一个基于文本控制台游戏在提问/回答式的风格。我决定尝试让它读取一个XML文件,而不是将其硬编码为java,因为XML具有类似树的样式,这很方便。这里是我的XML文件可能看起来像一个例子:

<disp>Text to be displayed</disp> 
<disp>Text to be displayed afterward</disp> 
<disp>What is your favorite color?</disp> 
<question> 
    <answer name="orange"> 
     <disp>Good choice.</disp> 
     <!-- More questions and stuff --> 
    </answer> 
    <default> 
     <disp>Wrong. The correct answer was orange.</disp> 
    </default> 
</question> 

我不知道它是否禁忌使用像伪编程语言的XML。如果有人有其他建议,随时给他们。

+0

你能多解释一下,你想达到什么目的?我不知道你的问题是什么。你提到了getParent()和indexOf()方法,但是你忘了补充说它们是JDOM的一部分。下次也会提到这一点,以便我们不会浪费时间来研究您已有的信息。 – vanje

回答

1

您的设计基本上是好的和Declarative Programming一个例子。您应该使用XML解析器将您的XML文件读入DOM或使用SAX。因为我认为你会想重新访问节点,所以我怀疑你需要一个DOM(FWIW,我使用XOM,xom.nu)。基于XML的声明式编程的最好例子之一是XSLT,其中数据和命令都是XML。

我使用这个模型很多。它的优点是数据结构可以是外部的并且可以编辑。

(请注意,您需要XML根元素)

,但它变得很凌乱,这主要是因为方法不区分 属性和元素之间。

所有的DOM或SAX工具都非常清楚地区分属性和元素,所以如果出现混淆,它就是其他地方。

0

如果您想要显示您想要的XML片段,但通常如果您想读取任何类型的文件,那么使用java.util.Scanner会很好。

Scanner scan = new Scanner (new File("file.xml")); 
while (scan.hasNext()) { 
    String theData = scan.nextLine(); 
} 
scan.close(); 

这应该返回你需要,直到用完线扫描的值。 希望它的作品和快乐编码!

+0

XML不是面向行的语言。行甘蔗分裂或以许多不同的方式合并。使用XML解析器。 –