代码之家  ›  专栏  ›  技术社区  ›  Morinar

从XML文件中检索两段数据的最佳方法是什么?

  •  2
  • Morinar  · 技术社区  · 16 年前

    我有一个XML文档,它处于转换前或转换后的状态,我需要从中提取一些信息。在pre情况下,我需要拉出两个表示pageWidth和pageHeight的标记,而在post情况下,我需要从一个特定的标记中提取pageHeight和pageWidth参数(我忘了它在我的头顶上是哪一个)。

    我要寻找的是一种高效/易于维护的方法来获取这两个元素。我只想看一次文件,取两件我需要的东西。

    我开始写一些 BufferedReader + FileReader ,但是我在进行字符串搜索,当标记跨越多行时会变得混乱。然后我看了看 DOMParser ,这似乎是理想的,但我不想把整个文件读入内存,如果我可以帮助它,因为文件可能会很大,我要找的标签几乎总是接近文件的顶部。然后我看了看 SAXParser ,但这似乎是一大堆复杂的过度杀伤力。

    有人有什么建议吗?或者实现我的目标的简单实现?谢谢。

    编辑:我忘了提到,由于我的各种限制,我使用的任何东西都必须是核心Java的“内置”,在核心Java中,我不能使用和/或下载任何第三方XML工具。

    3 回复  |  直到 16 年前
        1
  •  4
  •   BorisOkunskiy    16 年前

    虽然XPath非常适合查询XML数据,但我不知道Java的XPath实现是好是快(至少它们都使用DOM模型)。

    XMLInputFactory f = XMLInputFactory.newInstance();
    XMLStreamReader r = f.createXMLStreamReader("my.xml");
    try {
      while (r.hasNext()) {
        r.next();
        . . .
      }
    } finally {
      r.close()
    }
    

    咨询 StAX tutorial 和 XMLStreamReader javadocs 更多信息。

        2
  •  1
  •   Bozho    16 年前

    你可以用 XPath 搜索你的标签。 Here here 是一篇关于在Java中使用XPath的文章。


    一个易于使用的解析器(dom,sax)是 dom4j . 它比内置的SAXParser更易于使用。

        3
  •  0
  •   Santhosh Kumar Tekuri    16 年前