xml—使用XPath查询配置单元表中的数据的问题

busg9geu  于 2021-06-03  发布在  Hadoop
关注(0)|答案(0)|浏览(260)

我正在尝试获取正确的xpath来查询配置单元表中名为message的列中作为字符串包含的xml数据。xml来自内部系统的日志文件,我需要从数据中提取特定的数据。
为了简化这个过程,我尝试提取第一组数据,以确保具有正确的xmlxpath,但是在创建视图并执行查询之后,得到了空值。
下面是一个数据和配置单元查询的示例,我正在运行它来创建视图,以便从中提取“sessionkey”。

<AddOnlineToTrolley xmlns="http://tempuri.org/">
<accountSession
    xmlns:b="http://schemas.datacontract.org/2004/07/ApplicationServices.DataContracts.Common"
    xmlns:i="http://www.w3.org/2001/XMLSchema-instance">
    <b:SessionKey>d472046f-fa15-4cf5-bbf0-ee35bdde28f4</b:SessionKey>
    <b:SessionToken i:nil="true"/>
</accountSession>
<OnlineProducts
    xmlns:b="http://schemas.datacontract.org/2004/07/ApplicationServices.DataContracts.Common"
    xmlns:i="http://www.w3.org/2001/XMLSchema-instance">
    <b:OnlineProducts i:type="b:OnlineProductsCat">
        <b:AddToFavourites>true</b:AddToFavourites>
        <b:WeekDay>5</b:WeekDay>
        <b:ItemCount>1</b:ItemCount>
        <b:OrderOffset>0</b:OrderOffset>
        <b:FavouriteName>WeeklyPurchase</b:FavouriteName>
        <b:FirstOrderNumber>12505</b:FirstOrderNumber>
        <b:ProductId>312</b:ProductId>
        <b:Method>1</b:Method>
    </b:OnlineProducts>
</OnlineProducts>
</AddOnlineToTrolley>

配置单元查询

DROP VIEW AddOnlineToTrolley;
CREATE VIEW AddOnlineToTrolley(SessionKey) 
   AS SELECT 
       xpath_string (message, '/AddOnlineToTrolley/accountSession[1]/*[namespace-             uri()=\'http://schemas.datacontract.org/2004/07/ApplicationServices.DataContracts.Common\' and local-name()=\'SessionKey\'][1]'/'SessionKey')
 FROM onlineproductimport;

 Select * from AddOnlineToTrolley;

我还尝试了一些直接查询表的xpath语句,但仍然得到空值

xpath(message, '/*[local-name()=\'AddOnlineToTrolley\']')

最终的目标是创建一个视图,人们可以使用它来查询、挑选和选择上面xml中的数据,但我的优势不是XPath或xml
视图包含以下内容:
会话密钥
在线产品
添加收藏夹
平日
项目计数
订单偏移量
收藏夹名称
第一订单号
产品ID
方法

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题