用猪拉丁语解析 XML

Posted

技术标签:

【中文标题】用猪拉丁语解析 XML【英文标题】:Xml parsing with pig Latin 【发布时间】:2013-11-04 21:06:43 【问题描述】:

我对 Hadoop 和 Pig 都很陌生。我已经能够做一些简单的程序,但是当 XML 文件的一部分格式错误时处理 XML 让我很费力。

我可以使用 XMLLoader('tag') 从一个很棒的 xml 文件中获取所有标签。然而,如果一个人错过了一个结构良好的封闭标签,猪就会停在那个地方。例如

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

这只会拾取第一个有效标签。现在,我有使用 JAQL 的经验并且能够忽略错误记录,以便应用程序选择第二个标签。

我的问题是:他们是一种使用 Pig 而不是 JAQL 来处理不良 XML 格式的方法吗?

【问题讨论】:

【参考方案1】:

我一直在查看 pig XMLLoader 代码,格式错误的标签似乎正在发生的事情是加载器从未注意到标签结束,并且无法注意到它已进入新的主标签.似乎没有办法使用 XMLLoader,因为它目前可以解决这个问题。

但是,可以修改 XMLLoader 以使其以您希望的方式工作。可能是通过更改skipToTag 方法中的条件,以便如果它遇到指定开始标记的另一个实例,它会向前跳过,忽略格式错误的标记。请记住,如果您有同名的嵌套标签(例如地址作为根,但地址作为文档中较低的元素),这会搞砸,所以它不是万无一失的。

然而,在大多数情况下,预先验证 XML 似乎是一个更好的选择,或者让预处理器只将有效的 XML 提取到一个文件中,然后运行 ​​pig。

希望这会有所帮助。

【讨论】:

以上是关于用猪拉丁语解析 XML的主要内容,如果未能解决你的问题,请参考以下文章

无法解析“&”

XML 文件 - 我想要像 'á, â, ã, ó' 这样的拉丁字符

解析存储为文本的数字,逗号为十进制,点为千位

同形异义字:看我如何拿到TaoBao.com的解析权

带有重音/拉丁字符的 JSON 请求

xml_解析_解析方式和xml_常见的解析器