Estoy tratando de analizar y modificar un pom.xml de Maven usando XmlSlurper de Groovy. Mi pom.xml declara el espacio de nombres xsi.espacio de nombre tag0 agregado para los elementos en el espacio de nombres predeterminado
<?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>
Mi fuente maravillosa es la siguiente:
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)
Como se nota, he declarado el primer espacio de nombres como vacío. Sin embargo, en la etiqueta de salida0 se agrega en todas partes.
<?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>
¿Cómo evitar eso?
Para el momento en que mi solución es la eliminación de las etiquetas de forma manual:
println XmlUtil.serialize(pom).replaceAll('tag0:', '').replaceAll(':tag0', '')
Está construyendo 'XmlSlurper' sin espacio de nombres suficiente para godd? es decir: 'println XmlUtil.serialize (nuevo XmlSlurper (falso, falso) .parse ('pom.xml'))'? –
guau, sí, eso ya fue suficiente, gracias Tim. ¿Puedes proporcionarlo como una respuesta? También me he dado cuenta de que se han perdido todos los comentarios en XML, ¿conoce alguna solución para ello? Por cierto, aquí están las dos utilidades que escribí [pomRm] (http://www.stefanolocati.it/blog/?p=1226) y [pomVersions] (http://www.stefanolocati.it/blog/?p= 1220). – stivlo
No puedo ver cómo mantener los comentarios en este momento ... :-(Voy a pensar que si tengo un momento libre esta tarde ... –