为默认名称空间中的元素添加了xml – tag0命名空间
发布时间:2020-12-16 07:43:25 所属栏目:百科 来源:网络整理
导读:我正在使用Groovy的XmlSlurper来解析和修改Maven的pom.xml.我的pom.xml声明了命名空间xsi. ?xml version="1.0" encoding="UTF-8" standalone="no"?project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance
我正在使用Groovy的XmlSlurper来解析和修改Maven的pom.xml.我的pom.xml声明了命名空间xsi.
<?xml version="1.0" encoding="UTF-8" standalone="no"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>a-group-id</groupId> <artifactId>an-artifact-id</artifactId> 我的Groovy来源如下: import groovy.xml.XmlUtil def pom = new XmlSlurper().parse('pom.xml') .declareNamespace('': 'http://maven.apache.org/POM/4.0.0',xsi: 'http://www.w3.org/2001/XMLSchema-instance') //manipulate the pom println XmlUtil.serialize(pom) 您注意到,我已经将第一个命名空间声明为空.但是在输出中,tag0被添加到无处不在. <?xml version="1.0" encoding="UTF-8"?> <tag0:project xmlns:tag0="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> <tag0:modelVersion>4.0.0</tag0:modelVersion> <tag0:groupId>a-group-id</tag0:groupId> <tag0:artifactId>an-artifact-id</tag0:artifactId> 如何避免? 目前我的解决方法是手动删除标签: println XmlUtil.serialize(pom).replaceAll('tag0:','').replaceAll(':tag0','')
您可以构建没有
namespace awareness的XmlSlurper,如下所示:
import groovy.xml.XmlUtil def pom = new XmlSlurper( false,false ).parse( 'pom.xml' ) println XmlUtil.serialize(pom) 哪个应该给你你想要的答案…目前没有想到如何在slurp /序列化周期保持评论:-( 正如你所说,XmlParser可能是可能的,但是我目前的尝试失败了:-(有some code here可能会让你关闭,但是我还没有成功:-( (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |