gpt4 book ai didi

xml - Groovy的XMLUtil序列化方法不起作用

转载 作者:行者123 更新时间:2023-12-02 14:51:43 39 4
gpt4 key购买 nike

我正在使用groovy的XMLSlurper修改xml文件,并使用groovy的XMLUtil将其写回。

def xml = new XmlSlurper(false,false).parseText(new File("pom.xml").text)

// Append new elements or nodes
xml.appendNode {
pluginRepositories {
pluginRepository {
id 'synergian-repo'
url 'https://raw.github.com/synergian/wagon-git/releases'
}
}
}

// Write back to original file.
XmlUtil.serialize(xml, new File("pomm.xml").newPrintWriter("UTF-8"))

当我通过启动grails控制台执行此操作时,此工作正常。但是在grails脚本中使用此代码时会引发错误。
[Fatal Error] :1:1: Content is not allowed in prolog.
| Error ERROR: 'Content is not allowed in prolog.'
| Error Error executing script ReleasePlugin: groovy.lang.GroovyRuntimeException: org.xml.sax.SAXParseException; lineNumber: 1; columnNumber: 1; Content is not allowed in prolog. (NOTE: Stack trace has been filtered. Use --verbose to see entire trace.)
groovy.lang.GroovyRuntimeException: org.xml.sax.SAXParseException; lineNumber: 1; columnNumber: 1; Content is not allowed in prolog.
at ReleasePlugin$_run_closure1.doCall(ReleasePlugin:96)

注意:第96行是XMLUtil序列化的行,我在其中写回xml。

在JDK 1.7中使用Grails 2.3.5

Modify existing xml file in Groovy

最佳答案

由于OP从来不愿意提供反馈,因此这是基于mvmn注释对我有用的。

解决方案是将groovy.util.slurpersupport.Node封装到groovy.util.slurpersupport.NodeChild的实例中,然后再传递给XmlUtil:

import groovy.util.slurpersupport.Node
import groovy.util.slurpersupport.NodeChild
import groovy.xml.XmlUtil

class GroovyNodeSerializer {
static String toXML(Node node) {
return XmlUtil.serialize(new NodeChild(node, null, null))
}
}

关于xml - Groovy的XMLUtil序列化方法不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25397143/

39 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com