嵌套XML片段的XMLPath查询

时间:2018-05-02 10:34:56

标签: xpath

我正在尝试编写一个xpath查询来从xml文档中提取数据。不幸的是,该文档中嵌入了一个xml片段,似乎已经丢失了它的编码(<已经变得& lt>已经变成& gt等)。

xml doc的一个例子是:

<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>

我正在尝试提取以下值: ID 行动 InstID

获取ID是没有问题的,但是在RawData内部钻取片段已经超出了我的范围。感激地收到任何指针

(我打算在Hive中使用Hive-XML-SerDe执行xpath查询,这是xpath 1.0)

由于

1 个答案:

答案 0 :(得分:0)

使用XPath 3.1,您可以解析嵌入的XML文档并将其转换为节点树,然后您可以使用路径表达式处理该节点树。所以:

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

应该得到你想要的东西。

你没有说你的库支持哪个版本的XPath,这通常意味着它只支持1.0,所以你可能需要找到一个不同的库。

相关问题