XMLPath Запрос для вложенного фрагмента XML - PullRequest
0 голосов
/ 02 мая 2018

Я пытаюсь написать запрос xpath для извлечения данных из документа XML. К сожалению, в документ встроен фрагмент xml, который, похоже, утратил свою кодировку (<стал & lt> стал & gt и т. Д.).

Пример документа xml:

<OrderData xmlns:xsd="http://www.w3.org/2001/XMLSchema" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<Id>1</Id>
    <RawData>&lt;?xml version="1.0" encoding="UTF-16"?&gt;
        &lt;Data xmlns="nnn-mmm-com"&gt;
            &lt;Order Action="Remove" &gt;
            &lt;Instrument InstID="1"&gt;&lt;/Order&gt;&lt;
        /Data&gt;
    </RawData>
</OrderData>

Я пытаюсь извлечь следующие значения: Я бы действие INSTID

Получение идентификатора не является проблемой, но детализация фрагмента внутри RawData оказывается мне не по карману. Любые указатели с благодарностью получили

(я планирую выполнить запрос xpath в Hive с использованием Hive-XML-SerDe, который является xpath 1.0)

Спасибо

1 Ответ

0 голосов
/ 02 мая 2018

С XPath 3.1 вы можете анализировать встроенный XML-документ и превращать его в дерево узлов, которое затем можно обрабатывать с помощью выражений пути. Итак:

/OrderData/RawData/parse-xml(.)/*:Data/*:Instrument/@InstID

должен получить то, что вы хотите.

Вы не сказали, какую версию XPath поддерживает ваша библиотека, что обычно означает, что она поддерживает только 1.0, поэтому вам может понадобиться найти другую библиотеку.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...