为默认名称空间中的元素添加了xml – tag0命名空间

前端之家收集整理的这篇文章主要介绍了为默认名称空间中的元素添加了xml – tag0命名空间前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在使用Groovy的XmlSlurper来解析和修改Maven的pom.xml.我的pom.xml声明了命名空间xsi.
  1. <?xml version="1.0" encoding="UTF-8" standalone="no"?>
  2. <project xmlns="http://maven.apache.org/POM/4.0.0"
  3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  4. xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
  5. http://maven.apache.org/maven-v4_0_0.xsd">
  6. <modelVersion>4.0.0</modelVersion>
  7. <groupId>a-group-id</groupId>
  8. <artifactId>an-artifact-id</artifactId>

我的Groovy来源如下:

  1. import groovy.xml.XmlUtil
  2. def pom = new XmlSlurper().parse('pom.xml')
  3. .declareNamespace('': 'http://maven.apache.org/POM/4.0.0',xsi: 'http://www.w3.org/2001/XMLSchema-instance')
  4. //manipulate the pom
  5. println XmlUtil.serialize(pom)

您注意到,我已经将第一个命名空间声明为空.但是在输出中,tag0被添加到无处不在.

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <tag0:project xmlns:tag0="http://maven.apache.org/POM/4.0.0"
  3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  4. xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
  5. http://maven.apache.org/maven-v4_0_0.xsd">
  6. <tag0:modelVersion>4.0.0</tag0:modelVersion>
  7. <tag0:groupId>a-group-id</tag0:groupId>
  8. <tag0:artifactId>an-artifact-id</tag0:artifactId>

如何避免?

目前我的解决方法是手动删除标签

  1. println XmlUtil.serialize(pom).replaceAll('tag0:','').replaceAll(':tag0','')
您可以构建没有 namespace awareness的XmlSlurper,如下所示:
  1. import groovy.xml.XmlUtil
  2.  
  3. def pom = new XmlSlurper( false,false ).parse( 'pom.xml' )
  4. println XmlUtil.serialize(pom)

哪个应该给你你想要的答案…目前没有想到如何在slurp /序列化周期保持评论:-(

正如你所说,XmlParser可能是可能的,但是我目前的尝试失败了:-(有some code here可能会让你关闭,但是我还没有成功:-(

猜你在找的XML相关文章