Android Lint生成无效的xml文件

问题描述:

我有一个相当大的Android项目,我试图运行Android Lint。当我用--html运行lint并生成一个html文件时,它工作正常。当我运行lint --xml虽然它产生一个无效的XML文件。这是有问题的,因为我尝试将Android Lint集成到我们的Jenkins服务器中,并且Jenkins需要XML文件。我得到的错误是:Android Lint生成无效的xml文件

org.xml.sax.SAXParseException; lineNumber: 144334; columnNumber: 141; 
An invalid XML character (Unicode: 0x{2}) was found in the value of attribute "{1}" 
and element is "0". 

     explanation="You can replace certain strings, such as 1/2, and 1/4, with dedicated characters for these, such as ½ (½) and 

奇怪的是,它似乎是从Lint解释中的非法字符失败。我意识到我可以把这个特别的警告关掉,但这并不理想。有什么办法来防止这种情况的发生?谢谢!

+0

听起来像Jenkins插件中的错误。我会看看复制和修复它。 –

+0

非常酷,很高兴这引起了人们的注意。我实际上找到了解决办法,我认为这是发生此问题的原因。我会发布一个答案,希望它能帮助你。 –

所以看起来我可能在插件中发现了一个错误。我会发布我所提出的工作,希望在解决问题时能够帮助他人。导致此问题的问题是Jenkins XML解析器无法读取警告说明中的某些字符。

因此,当您运行lint时,我会建议将其输出到诸如'lint-report-malformed.xml'之类的文件中,那么另一个*问题将提供用于从文件中筛选无效字符的Perl脚本。 How to remove invalid characters from an xml file using sed or Perl

perl -CSDA -pe' 
    s/[^\x9\xA\xD\x20-\x{D7FF}\x{E000}-\x{FFFD}\x{10000}-\x{10FFFF}]+//g; 
' lint-report-malformed.xml > lint-report.xml 

现在Jenkins插件可以读取文件。