This is an automated email from the ASF dual-hosted git repository. gnodet pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/maven.git
The following commit(s) were added to refs/heads/master by this push: new f92fdb86c2 Fix XML parsing problem with empty namespace (#1307) f92fdb86c2 is described below commit f92fdb86c243a3da5fc1ba441f495b95183b6799 Author: Guillaume Nodet <gno...@gmail.com> AuthorDate: Fri Nov 17 16:51:28 2023 +0100 Fix XML parsing problem with empty namespace (#1307) --- .../java/org/apache/maven/internal/xml/XmlNodeBuilder.java | 2 +- .../org/apache/maven/internal/xml/XmlNodeBuilderTest.java | 14 ++++++++++++++ 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/maven-xml-impl/src/main/java/org/apache/maven/internal/xml/XmlNodeBuilder.java b/maven-xml-impl/src/main/java/org/apache/maven/internal/xml/XmlNodeBuilder.java index fa202664ec..75b8201adc 100644 --- a/maven-xml-impl/src/main/java/org/apache/maven/internal/xml/XmlNodeBuilder.java +++ b/maven-xml-impl/src/main/java/org/apache/maven/internal/xml/XmlNodeBuilder.java @@ -201,7 +201,7 @@ public class XmlNodeBuilder { for (int i = 0; i < namespacesSize; i++) { String prefix = parser.getNamespacePrefix(i); String namespace = parser.getNamespaceURI(i); - attrs.put("xmlns:" + prefix, namespace); + attrs.put(prefix != null && !prefix.isEmpty() ? "xmlns:" + prefix : "xmlns", namespace); } for (int i = 0; i < attributesSize; i++) { String aname = parser.getAttributeLocalName(i); diff --git a/maven-xml-impl/src/test/java/org/apache/maven/internal/xml/XmlNodeBuilderTest.java b/maven-xml-impl/src/test/java/org/apache/maven/internal/xml/XmlNodeBuilderTest.java index 44f89ed3c8..abcc2f3125 100644 --- a/maven-xml-impl/src/test/java/org/apache/maven/internal/xml/XmlNodeBuilderTest.java +++ b/maven-xml-impl/src/test/java/org/apache/maven/internal/xml/XmlNodeBuilderTest.java @@ -18,9 +18,12 @@ */ package org.apache.maven.internal.xml; +import javax.xml.stream.XMLStreamReader; + import java.io.IOException; import java.io.StringReader; +import com.ctc.wstx.stax.WstxInputFactory; import org.apache.maven.api.xml.XmlNode; import org.junit.jupiter.api.Test; @@ -41,4 +44,15 @@ class XmlNodeBuilderTest { XmlNode node2 = XmlNodeBuilder.build(r); assertEquals(node1, node2); } + + @Test + void testWithNamespace() throws Exception { + String doc = "<?xml version='1.0'?><doc xmlns='foo:bar'/>"; + StringReader r = new StringReader(doc); + XMLStreamReader xsr = WstxInputFactory.newFactory().createXMLStreamReader(r); + XmlNode node = XmlNodeBuilder.build(xsr); + assertEquals("doc", node.getName()); + assertEquals(1, node.getAttributes().size()); + assertEquals("foo:bar", node.getAttribute("xmlns")); + } }