我想使用Java从上到下读取XML。但是,我不想使用递归函数,因为我希望能够跳转到另一个元素并从该位置开始读取。
我尝试使用getParent()
和indexOf()
方法(下面所有三个库都有这些方法)来做到这一点,但它变得非常混乱,主要是因为这些方法不区分属性和元件。
我确信必须有一种简单的方法可以做到这一点,但在尝试dom4j
,jdom
和xom
后,我仍然没有找到解决方案。
[编辑]更多信息:
我的朋友希望以问题/答案类型的方式制作一个基于控制台文本的游戏。我没有将其硬编码到java中,而是决定尝试将其读取为XML文件,因为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 :(得分:1)
你的设计基本上很好,是Declarative Programming的一个例子。您应该使用XML解析器将XML文件读入DOM或使用SAX。因为我认为你想重新访问节点我怀疑你需要一个DOM(FWIW我使用XOM,xom.nu)。基于XML的声明性编程的最佳示例之一是XSLT,其中数据和命令都是XML。
我使用这个模型很多。它的优点是数据结构可以是外部的并且可以编辑。
(请注意,您的XML需要根元素)
但它变得非常混乱,主要是因为方法没有 区分属性和元素。
所有DOM或SAX工具都非常清楚地区分属性和元素,因此如果存在混淆,它就在其他地方。
答案 1 :(得分:0)
如果您要显示您想要对XML片段执行的操作会很好,但通常如果您想要读取任何类型的文件,请使用java.util.Scanner。
Scanner scan = new Scanner (new File("file.xml"));
while (scan.hasNext()) {
String theData = scan.nextLine();
}
scan.close();
这应该返回所需的值,直到用完扫描行为止。 希望它有效并且快乐编码!
答案 2 :(得分:0)
因为您想要读取xml文件。我建议去SAX解析器。它是基于事件的解析器,非常快速有效地用于xml读取(自上而下方法)。
http://www.mkyong.com/java/how-to-read-xml-file-in-java-sax-parser/将解释有关sax解析器的用法。
由于