我是完整的Perl newb,但我相信学习Perl会比弄清楚如何用awk解析XML更容易。我想从该数据集中解析.sgm文件:

http://kdd.ics.uci.edu/databases/reuters21578/ reuters21578.html

这是十年前新闻社的20,000篇路透社文章的集合,并且是针对某些类型的文本处理的标准测试集。为了简化我的perl测试,我从第一个文件中抓取了前几百行,并进行了test.sgm的编写,直到我的脚本可以正常工作为止。它开始像这样: 通用标签

我使用了 http:// www中的perl脚本。 xml.com/pub/a/2001/05/16/perlxml.html 作为示例,最后得到了extract.pl: 通用标签

我得到以下输出: 通用标签

Google并没有帮助(最热门的页面似乎是遇到与我相同的错误的页面),而我的Perl黑客朋友仍然在维加斯的Blackhat徘徊。有任何想法我做错了什么或如何清理文件?我认为这种不良情况正在“ Unknown”标记内发生,我什至不需要。我真的只想从每篇文章中提取文本。如果您需要更多信息,请告诉我。

有帮助吗?

解决方案

数字字符引用“”在有效的XML文档中不合法。我请您参考XML中的 4.1字符和实体引用推荐:

使用字符引用引用的字符必须与Char的产生匹配。

现在,如果我们点击链接并查看 字符

字符::=#x9 | #xA | #xD | [#x20-#xD7FF] | [#xE000-#xFFFD] | [#x10000-#x10FFFF]

我们看到在有效的XML文档中,有些字符既不能字面显示也不能作为数字字符引用出现。

一个奇怪的东西;我今天已经学到了一些有关XML的知识:)。

XML中的ASCII控制字符中查看此对话,以了解一种可能的解决方法。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top