1

我正在尝试从控制台日志中提取错误并使用 Perl 形成 XML,对于某些文件,我收到错误,因为“代码点 \u0008 在 /codepath/getErrors.pl 第 498 行不是 XML 中的有效字符”。

浏览 \u0008 谈到退格字符,但我不确定如何从字符串/文本中删除它。

如果您能帮助我在阅读控制台日志时删除这种控制字符,那就太好了,这样 XML 格式就可以运行而不会出现任何错误。

非常感谢您对此的帮助!

4

1 回答 1

4

退格确实不是XML 文件中的有效字符。这表明生成“XML”的工具在某种程度上被破坏了。如果可能,请在此处应用修复程序。

如果确实需要,您可以从文件中过滤掉退格键,例如

$ perl -pe's/\x08//g' <brokenfile.not-xml >fixedfile.still-not-xml

如果您的文件包含其他控制字符,您可以将正则表达式扩展到整个范围:

#filtering forbidden control characters in the ASCII range
$ perl -pe's/[\x00-\x08\x0B-\x0C\x0E-\x1F]//g' <brokenfile.not-xml >fixedfile.still-not-xml

合法的 XML 字符是:

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

但请注意,您的原始文件不是XML,并且您使用的任何库都通过抛出错误来做正确的事情。

根据文件(打算)表示的数据,过滤掉控制代码可能会改变该数据的含义。

于 2013-03-28T19:23:32.410 回答