prolog中不允许使用Groovy XmlSlurper内容

时间:2014-04-04 14:49:45

标签: xml groovy

我正在尝试解析XML文件并遇到此错误:

org.xml.sax.SAXParseException: Content is not allowed in prolog

我在SO上看过其他帖子,但我的XML文档看起来还不错 - 在XML声明之前没有额外的字符或空格。

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE coverage SYSTEM "http://cobertura.sourceforge.net/xml/coverage-04.dtd">
<coverage branch-rate="0.24074074074074073" branches-covered="39" branches-valid="162" complexity="0" line-rate="0.3485915492957746" lines-covered="198" lines-valid="568" timestamp="1396622452625" version="0.2.6">

以下是脚本的相关部分(Groovy 1.8.9):

def coveragedata = new XmlSlurper(false,false).parseText(coverageFile)

感谢您的帮助。

2 个答案:

答案 0 :(得分:8)

你应该可以这样做:

def parser = new XmlSlurper() 
parser.setFeature("http://apache.org/xml/features/disallow-doctype-decl", true)
def coverageData = parser.parse( coverageFile )

或者如果coverageFile是包含文件中xml的字符串,如上所述,parseText代替parse

parser.parseText( coverageFile )

答案 1 :(得分:1)

此代码可以正常工作:

def coveragedata = new XmlSlurper(false,false,true).parseText(coverageFile)
println coveragedata.'@branch-rate'