xml解析

jutyujz0  于 2021-06-03  发布在  Hadoop
关注(0)|答案(1)|浏览(538)

我对hadoop和pig都很陌生。我已经能够做一些简单的程序,但有一个让我很累的是,当xml文件的一部分格式不正确时处理xml。
我可以使用xmloader('tag')从一个xml文件中获取所有的标记,这很好。然而,如果一个丢失了一个格式良好的关闭标签清管器将停止在这一个。例如

<tag>
</tag>
<tag>
</tag1>
<tag>
</tag>

这将只拾取第一个有效标记。现在,我有了使用jaql的经验,可以忽略错误记录,这样应用程序就可以获取第二个标记。
我的问题是:他们的was是一种使用pig而不是jaql来处理糟糕的xml格式的方法吗?

mzmfm0qo

mzmfm0qo1#

我一直在看pig-xmloader代码,对于格式错误的标记,似乎发生了这样的情况:加载程序从来没有注意到标记结束,也没有办法注意到它输入了一个新的主标记。似乎没有办法使用xmloader,因为它目前可以解决这个问题。
但是,可以修改xmloader,使其以您希望的方式工作。可能是通过更改skiptotag方法中的条件,以便如果它运行到指定的开始标记的另一个示例中,它会跳转到该示例,忽略格式错误的标记。请记住,如果您有同名的嵌套标记(例如,address作为root,但address作为doc中较低的元素),那么这将导致混乱,因此这不是万无一失的。
然而,在大多数情况下,预先验证xml可能是更好的选择,或者让预处理器只将有效的xml提取到pig运行的文件中。
希望这有帮助。

相关问题