使用 pig latin 的 XMLloader

XMLloader using pig latin

<user>

<ids>
<id>
456
</id>
<id>
123
</id>
</ids>

<username>
Taylor
</username>
</user>

以上运行成功但存储了 0 条记录

请帮我解决这个问题

您需要为 . 添加 singleline 模式选项以匹配换行符,或 [\s\S]* 解决此问题:

B = foreach A GENERATE FLATTEN(REGEX_EXTRACT_ALL(x, '<user>\n\s*<id>([\s\S]*)</id>\n\s*<username>([\s\S]*)</username>\n\s*</user>')) 

或者甚至省略 \n 因为 \s 已经捕获了它:

B = foreach A GENERATE FLATTEN(REGEX_EXTRACT_ALL(x, '<user>\s*<id>([\s\S]*)</id>\s*<username>([\s\S]*)</username>\s*</user>'))