首页 文章

嵌套XML片段的XMLPath查询

提问于
浏览
0

我正在尝试编写一个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 Action InstID

获取Id是没有问题的,但是在RawData内部钻取片段已经超出了我的范围 . 任何指针都感激不尽

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

谢谢

1 回答

  • 0

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

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

    应该得到你想要的 .

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

相关问题