stackoverflow转储文件的XPath

stackoverflow转储文件的XPath,xpath,apache-pig,Xpath,Apache Pig,我正在使用以下格式的文件: <badges> <row Id="1" UserId="1" Name="Teacher" Date="2009-09-30T15:17:50.66"/> <row Id="2" UserId="3" Name="Teacher" Date="2009-09-30T15:17:50.69"/> </badges> 输出I get()-没有值 我希望文件输出为文本,即1,1

我正在使用以下格式的文件:

<badges>
  <row Id="1" UserId="1" Name="Teacher"   Date="2009-09-30T15:17:50.66"/>
  <row Id="2" UserId="3" Name="Teacher"  Date="2009-09-30T15:17:50.69"/>                
</badges>
输出I get()-没有值


我希望文件输出为文本,即1,1,教师,2009-09-30T15:17:50.66。我该怎么做呢?

我不熟悉pig xmlloader,但
/row@Id
有两个问题:

  • 它不是有效的XPath
  • 如果是的话,这将是一条绝对的道路
尝试:


它使用有效的语法和相对路径。

使用XPathAll提取属性。Xpath在属性方面有一个

REGISTER '/path/piggybank-0.15.0.jar'; -- Use the jar name you downloaded
DEFINE XPathAll org.apache.pig.piggybank.evaluation.xml.XPathAll();

B = foreach A generate XPathAll(x, 'row/@Id', true, false).$0 as (id:chararray);

请尝试
/row/@*
获取每个属性的值,然后解释。。。。你让我试试的剧本。这和我以前尝试的一样,我对此感到厌倦,并将XPathAll包含在define中:define XPathAll org.apache.pig.piggybank.evaluation.xml.XPathAll;但是我得到一个错误,无法使用导入解析XPathAll.ARGUMENTS.values:[,java.lang.,org.apache.pig.builtin.,org.apache.pig.impl.builtin.]日志文件中的详细信息:/home/training/pig1492083518074.log您需要注册piggybank.jar。下载piggybank.jar并注册。我已经更新了脚本。这对我帮助很大!我现在得到了输出:(1,1,老师,2009-09-30T15:17:50.66)(2,3,老师,2009-09-30T15:17:50.69)(3,13,老师,2009-09-30T15:17:50.69)(4,14,老师,2009-09-30T15:17:50.69)(5,22,老师,2009-09-30T15:17:50.69)有没有办法去掉开头和结尾的括号。。。我尝试使用org.apache.pig.piggybank.storage.XMLLoader('row')作为x:chararray修改LOAD'/user/training/badgesxml';但这对我不起作用。不,这就是控制台上打印关系的方式。如果将其写入文件,括号将不在那里。请参阅此处了解关系
B = foreach A generate xpath(x, 'row/@Id').
REGISTER '/path/piggybank-0.15.0.jar'; -- Use the jar name you downloaded
DEFINE XPathAll org.apache.pig.piggybank.evaluation.xml.XPathAll();

B = foreach A generate XPathAll(x, 'row/@Id', true, false).$0 as (id:chararray);