Author: tilman
Date: Fri Nov 28 19:14:11 2025
New Revision: 1930079

Log:
PDFBOX-5288: push "rdf:li" element; fix push/pop imbalance

Modified:
   
pdfbox/branches/3.0/xmpbox/src/main/java/org/apache/xmpbox/xml/DomXmpParser.java
   
pdfbox/branches/3.0/xmpbox/src/test/java/org/apache/xmpbox/xml/DomXmpParserTest.java

Modified: 
pdfbox/branches/3.0/xmpbox/src/main/java/org/apache/xmpbox/xml/DomXmpParser.java
==============================================================================
--- 
pdfbox/branches/3.0/xmpbox/src/main/java/org/apache/xmpbox/xml/DomXmpParser.java
    Fri Nov 28 19:14:06 2025        (r1930078)
+++ 
pdfbox/branches/3.0/xmpbox/src/main/java/org/apache/xmpbox/xml/DomXmpParser.java
    Fri Nov 28 19:14:11 2025        (r1930079)
@@ -548,8 +548,17 @@ public class DomXmpParser
         Element liChild = DomHelper.getUniqueElementChild(liElement);
         if (liChild != null)
         {
-            nsFinder.push(liChild);
-            return parseLiDescription(xmp, descriptor, liChild);
+            try
+            {
+                nsFinder.push(liElement);
+                nsFinder.push(liChild);
+                return parseLiDescription(xmp, descriptor, liChild);
+            }
+            finally
+            {
+                nsFinder.pop();
+                nsFinder.pop();
+            }
         }
         else
         {

Modified: 
pdfbox/branches/3.0/xmpbox/src/test/java/org/apache/xmpbox/xml/DomXmpParserTest.java
==============================================================================
--- 
pdfbox/branches/3.0/xmpbox/src/test/java/org/apache/xmpbox/xml/DomXmpParserTest.java
        Fri Nov 28 19:14:06 2025        (r1930078)
+++ 
pdfbox/branches/3.0/xmpbox/src/test/java/org/apache/xmpbox/xml/DomXmpParserTest.java
        Fri Nov 28 19:14:11 2025        (r1930079)
@@ -116,4 +116,38 @@ class DomXmpParserTest
                 () -> xmpParser.parse(s.getBytes(StandardCharsets.UTF_8)));
         Assertions.assertEquals("No type defined for 
{http://ns.adobe.com/pdf/1.3/}CreationDate";, ex.getMessage());
     }
+
+    /**
+     * PDFBOX-5288: check that namespace declaration within an "rdf:li" 
element is found.
+     *
+     * @throws XmpParsingException
+     */
+    @Test
+    void testPDFBox5288() throws XmpParsingException
+    {
+        String s = "<?xml version=\"1.0\" encoding=\"UTF-8\" 
standalone=\"no\"?>\n" +
+                    "<?xpacket begin=\"\" 
id=\"W5M0MpCehiHzreSzNTczkc9d\"?><x:xmpmeta xmlns:x=\"adobe:ns:meta/\" 
x:xmptk=\"Public XMP Toolkit Core 4.0  \">\n" +
+                    " \n" +
+                    " <rdf:RDF 
xmlns:rdf=\"http://www.w3.org/1999/02/22-rdf-syntax-ns#\";>\n" +
+                    "  \n" +
+                    "  <rdf:Description 
xmlns:xmpMM=\"http://ns.adobe.com/xap/1.0/mm/\"; rdf:about=\"\">\n" +
+                    "   
<xmpMM:DocumentID>uidd:1f0e03977b90b6365a376454ffdf34a7</xmpMM:DocumentID>\n" +
+                    "   <xmpMM:History>\n" +
+                    "    <rdf:Seq>\n" +
+                    "     <rdf:li 
xmlns:stEvt=\"http://ns.adobe.com/xap/1.0/sType/ResourceEvent#\";>\n" +
+                    "      <rdf:Description>\n" +
+                    "       <stEvt:action>created</stEvt:action>\n" +
+                    "       <stEvt:parameters>iDRS PDF output engine 
7</stEvt:parameters>\n" +
+                    "       
<stEvt:when>2022-09-12T12:00:07+02:00</stEvt:when>\n" +
+                    "      </rdf:Description>\n" +
+                    "     </rdf:li>\n" +
+                    "    </rdf:Seq>\n" +
+                    "   </xmpMM:History>\n" +
+                    "  </rdf:Description>\n" +
+                    " </rdf:RDF>\n" +
+                    "</x:xmpmeta><?xpacket end=\"w\"?>";
+        DomXmpParser xmpParser = new DomXmpParser();
+        XMPMetadata xmp = xmpParser.parse(s.getBytes(StandardCharsets.UTF_8));
+        Assertions.assertNotNull(xmp.getXMPMediaManagementSchema());
+    }
 }

Reply via email to