从XML文件中检索两段数据的最佳方式是什么?
问题描述:
我有一个XML文档,它处于FO转换后的状态,我需要从中提取一些信息。在这种情况下,我需要提取两个代表pageWidth和pageHeight的标签,而在后一种情况下,我需要从特定标签中提取页面高度和页面宽度参数(我忘记了哪个标签不在我的头顶)。从XML文件中检索两段数据的最佳方式是什么?
我在寻找的是一种高效/易于维护的方法来抓住这两个元素。我只想一次性读取文档来获取我需要的两件事情。
我最初开始写一些使用BufferedReader
+ FileReader
的东西,但后来我在做字符串搜索,当标签跨越多行时,它会变得杂乱无章。然后我看了DOMParser
,这看起来很理想,但我不想将整个文件读入内存,如果我可以帮助它,因为文件可能很大,我正在寻找的标签将几乎总是接近文件的顶部。然后,我看着SAXParser
,但这似乎是我想要完成的一大堆复杂的矫枉过正。
有人有什么建议吗?还是简单的实现,可以实现我的目标?谢谢。
编辑:我忘记提及,由于我有各种限制,无论我使用什么,都必须“内置”到核心Java,我无法使用和/或下载任何第三方XML工具。
答
尽管XPath非常适合查询XML数据,但我并不知道Java的良好且快速的XPath实现(它们都至少使用DOM模型)。
我会建议你坚持使用StAX。它甚至对于大文件速度极快,它的游标API是相当简单:
XMLInputFactory f = XMLInputFactory.newInstance();
XMLStreamReader r = f.createXMLStreamReader("my.xml");
try {
while (r.hasNext()) {
r.next();
. . .
}
} finally {
r.close()
}
+1 StAX的... – Bozho 2010-04-05 19:30:07
这似乎是几乎正是我一直在寻找。将进一步调查。 – Morinar 2010-04-05 19:36:37
这完美地根据我想要它做的事情。感谢您的输入! – Morinar 2010-04-05 21:11:28