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"));
+    }
 }

Reply via email to