Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/xpath/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Pig中使用Xpath提取xml属性?_Xpath_Xml Parsing_Attributes_Apache Pig - Fatal编程技术网

如何在Pig中使用Xpath提取xml属性?

如何在Pig中使用Xpath提取xml属性?,xpath,xml-parsing,attributes,apache-pig,Xpath,Xml Parsing,Attributes,Apache Pig,我想用Pig拉丁语从xml中提取属性 这是xml文件的一个示例 <CATALOG> <BOOK> <TITLE test="test1">Hadoop Defnitive Guide</TITLE> <AUTHOR>Tom White</AUTHOR> <COUNTRY>US</COUNTRY> <COMPANY>CLOUDERA</COMPANY> <PRICE>

我想用Pig拉丁语从xml中提取属性

这是xml文件的一个示例

<CATALOG>
<BOOK>
<TITLE test="test1">Hadoop Defnitive Guide</TITLE>
<AUTHOR>Tom White</AUTHOR>
<COUNTRY>US</COUNTRY>
<COMPANY>CLOUDERA</COMPANY>
<PRICE>24.90</PRICE>
<YEAR>2012</YEAR>
</BOOK>
</CATALOG>
结果是:

(,24.90)
我希望有人能帮我。
谢谢。

piggybank的XPath类中有两个错误:

  • ignoreNamespace逻辑中断了对XML属性的搜索

  • IgnoreNamespace参数默认为true,无法覆盖

  • 以下是我使用XPathAll的变通方法:

    XPathAll(x, 'BOOK/TITLE/@test', true, false).$0 as (test:chararray)
    
    如果仍然需要忽略名称空间,请执行以下操作:

    XPathAll(x, '//*[local-name()=\'BOOK\']//*[local-name()=\'TITLE\']/@test', true, false).$0 as (test:chararray)
    

    也许你的意思是
    'BOOK/TITLE/@test'
    而不是
    'BOOK/AUTHOR/@test'
    AUTHOR
    元素没有
    test
    属性。很抱歉。如果
    BOOK/PRICE
    与给定的焦点一起工作,那么
    BOOK/TITLE/@test
    也应该工作,除非piggybank不支持属性。我想
    书/标题
    也可以吗?您可以尝试
    BOOK/@*
    ,这将为您提供BOOK下的所有属性。或者,
    dump
    命令可能无法很好地处理属性。。。。试试
    string(BOOK/TITLE/@test)
    “异常”没有多大帮助,可能意味着什么。请更新(点击)你的问题和你目前的发现,这将进一步帮助了解发生了什么。我也面临同样的问题,并尝试了你建议的相同方式,但对我不起作用<代码>返回错误。productsOneByOne=FOREACH-allProducts生成XPathAll(x,'product/@productID',true,false)。$0作为(productID:chararray);错误org.apache.pig.tools.grunt.grunt-错误1025:字段投影无效。架构中不存在投影字段[x]:data:chararray
    my post:
    XPathAll(x, '//*[local-name()=\'BOOK\']//*[local-name()=\'TITLE\']/@test', true, false).$0 as (test:chararray)