救命啊!你的几分钟可以节省我几个小时!!
我用Pig来获取一些信息。
<Content
<Name ><\Name>
<Data ><\Data>
<Data ><\Data>
><\Content>
所以我用了:
abcd_ = LOAD 'parentFolder/*' USING org.apache.pig.piggybank.storage.XMLLoader('Content') AS (content: chararray);
我只需要一些具体的信息,我不知道有没有可能:
abcd_ = LOAD 'parentFolder/*' USING org.apache.pig.piggybank.storage.XMLLoader('Content','Data') AS (content: chararray,data: chararray);
但我希望避免这种情况。我已经成功地在xmloader之后使用regex提取了其他信息,除了以下内容(只是一个可能的字符组合示例)
<Data Name="Buffer">{"$type"System.Collections.Generic'[!#%,:()!@-;[.}<\Data>
我的正则表达式:
1. \\<Data Name=\\"Buffer\\"\\>\\{(.*)\\}\\<\Data\\> -- Unexpected character D at <\Data>
2. \\<Data Name=\\"Buffer\\"\\>\\{(.*)\\}\\<\\Data\\> -- I got nothing
3. \<Data Name=\"Buffer\"\>\{(.*)\}\<\\Data\> -- Unexpected character < at \<Data Name..
4. \\<Data Name=\\"Buffer\\"\\>\\{(.*)\\}\\<\\\Data\\> -- Unexpected character D at <\\\Data>
我打算得到:
"$type"System.Collections.Generic'[!#%,:()!@-;[.
编辑:
刚刚意识到一个巨大的错误/
找到了答案
<Data Name=\\"Buffer\\">\\{(.*)\\}</Data\\>
1条答案
按热度按时间bttbmeg01#
解析此xml的更好方法是使用XPathJavaAPI。
以下打印:
XXXYYYZZ公司
111222333
我已经上传了我的答案源代码到github这里。