加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

为默认名称空间中的元素添加了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可能会让你关闭,但是我还没有成功:-(

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读