gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-03 16:29:13 25 4
gpt4 key购买 nike

我想使用 Pig Latin 从 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>

我使用了这个脚本,但它不起作用:
REGISTER ./piggybank.jar
DEFINE XPath org.apache.pig.piggybank.evaluation.xml.XPath();

A = LOAD './books.xml' using org.apache.pig.piggybank.storage.XMLLoader('BOOK') as (x:chararray);

B = FOREACH A GENERATE XPath(x, 'BOOK/TITLE/@test'), XPath(x, 'BOOK/PRICE');
dump B;

输出是:
(,24.90)

我希望有人可以帮助我。
谢谢。

最佳答案

piggybank 的 XPath 类中有 2 个错误:

  • ignoreNamespace 逻辑中断了对 XML 属性的搜索
    https://issues.apache.org/jira/browse/PIG-4751
  • ignoreNamepace 参数默认为true,不能被覆盖
    https://issues.apache.org/jira/browse/PIG-4752

  • 这是我使用 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)

    关于xpath - 如何在 Pig 中使用 Xpath 提取 xml 属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32789734/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com