如何在Pig中使用Xpath提取xml属性?
我想用Pig拉丁语从xml中提取属性 这是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>
<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类中有两个错误:
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)