我有一个类似以下的XML文件。我正在使用XMLLOader
加载XML。它工作正常。但是,在获取值时,它会给出空值:
<mfh>
<f></f>
<sn>***</sn>
<st>****</st>
<vnr>****</vnr>
<cb>***</cb>
</mfh>
<md>
<nei>
<ne>***</ne>
<k>***</k>
<n>***</n>
</nei>
<mi>
<mts>**</mts>
<g>**</g>
<mv>
<m>***</m>
</mv>
</mi>
.....
.....
</md>
我的猪脚本如下:
REGISTER '/usr/lib/pig/piggybank.jar'
a = load '/user/root/sample.xml' using org.apache.pig.piggybank.storage.XMLLoader('mfh') as (doc:chararray);
dump input_xml;
b = foreach input_xml generate FLATTEN(REGEX_EXTRACT_ALL(doc,'<mfh>\\s*<ffv>(.*)</ffv>\\s*</mfh'));
dump required_tags;
脚本的输出如下:
没有任何错误,但输出是()。我已经更新了XML文件,我想解析所有的值。
答案 0 :(得分:0)
你能试试吗?
打印&#39; ffv&#39;的价值根据您的示例属性:
required_tags = foreach input_xml generate FLATTEN(REGEX_EXTRACT_ALL(doc,'<mfh>\\s+<ffv>(.*)</ffv>.*'));
打印ffv,sn,st,vn,cbt:
的所有值 required_tags = foreach input_xml generate FLATTEN(REGEX_EXTRACT_ALL(doc,'<mfh>\\s+<ffv>(.*)</ffv>\\s+<sn>(.*)</sn>\\s+<st>(.*)</st>\\s+<vn>(.*)</vn>\\s+<cbt>(.*)</cbt>\\s+</mfh>'));
答案 1 :(得分:0)
你可以这样做
required_tags = foreach input_xml生成FLATTEN(REGEX_EXTRACT_ALL(doc,&#39; \ s *(。)\ s (。)\ s (。 )\ s (。)\ s (。*)&#39;))AS(ffv,sn,st,vn,cbt); dump required_tags;