我试图从控制台日志中查找错误并使用Perl形成XML,对于某些文件我收到错误,因为“Code point \ u0008不是XML中的有效字符/ codepath/getErrors.pl第498行”
浏览\ u0008会谈到退格字符,但我不知道如何从字符串/文本中删除它。
如果您可以在阅读控制台日志时帮助我删除此类控制字符,那将非常棒,这样XML格式就可以运行而没有任何错误。
非常感谢您的帮助!
答案 0 :(得分:4)
Backspaces确实没有valid character in an XML file。这表明生成“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,并且您使用的任何库都是通过抛出错误做正确的事情。
根据文件(意图)所代表的数据,过滤掉控制代码可能会改变该数据的含义。