Как найти элементы в XML, используя xpath с реализацией Java Stream Stax

Я пытаюсь создать новый метод для поиска элементов в 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;
    }
}

person Lucas Pires    schedule 18.05.2017    source источник
comment
XPath предназначен для работы с объектной моделью документа (DOM) и, следовательно, не с потоковым подходом. По-видимому, кто-то собрал библиотеку для включения XPath в потоковую модель, но я сомневаюсь, стоит ли надевать поводья на велосипеде. Зачем использовать потоковую модель, если вы хотите манипулировать DOM?   -  person Lew Bloch    schedule 18.05.2017
comment
Я думаю, что это сообщение в блоге очень похоже на то, что вы спрашиваете stackoverflow.com/questions/8791600/   -  person vtd-xml-author    schedule 18.05.2017


Ответы (1)


Для ограниченной поддержки xpath поверх парсера StaX вы можете использовать https://github.com/polyglotted/xpath-stax

person Iskra Vitaly    schedule 18.05.2017
comment
Вы знаете эту библиотеку? Я не нашел примеров. - person Lucas Pires; 19.05.2017