【问题标题】:How to find elements into a XML using xpath with a Java Stream implementation Stax如何使用带有 Java Stream 实现 Stax 的 xpath 在 XML 中查找元素
【发布时间】:2017-05-18 15:27:19
【问题描述】:

我正在尝试创建一种在 XML 中查找元素的新方法,我想在 xml 中创建动态查询,我没有找到使用 xpath 的示例,

可以将 xpath 与 stax 一起使用吗?如果没有,是否有一种简单的方法来创建查询以使用 stax 查找元素?

public static void main(String[] args) throws Exception {
    XMLInputFactory factory = XMLInputFactory.newInstance();

    Reader fileReader = new StringReader(ExempleXml.xml);
    XMLStreamReader reader = factory.createXMLStreamReader(fileReader);

    while (reader.hasNext()) {
        process(reader);
        reader.next();
    }

}

private static void process(XMLStreamReader reader) {
    int eventType = reader.getEventType();
    switch (eventType) {
        case XMLStreamConstants.START_ELEMENT:
            System.out.println("Start element: " + reader.getLocalName());

            int count = reader.getAttributeCount();
            for (int i = 0; i < count; i++) {
                String name = reader.getAttributeLocalName(i);
                String value = reader.getAttributeValue(i);
                System.out.println("\tAttribute name/value: " + name + "/" + value);
            }
            break;

        case XMLStreamConstants.END_ELEMENT:
            System.out.println("End element: " + reader.getLocalName());
            break;

        case XMLStreamConstants.CHARACTERS:
            System.out.println("Text: " + reader.getText());
            break;
        default:
            break;
    }
}

【问题讨论】:

  • XPath 旨在用于文档对象模型 (DOM),因此不适用于流式处理方法。显然有人已经将一个库放在一起,将 XPath 塞入流模型中,但我对将缰绳放在自行车上持怀疑态度。如果要操作 DOM,为什么要使用流模型?
  • 我觉得这篇博文和你问的很像stackoverflow.com/questions/8791600/…

标签: java xml xpath stax


【解决方案1】:

对于 StaX 解析器之上的有限 xpath 支持,您可以使用 https://github.com/polyglotted/xpath-stax

【讨论】:

  • 你知道这个库吗?我没有找到示例。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-08-12
  • 1970-01-01
相关资源
最近更新 更多