You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@pdfbox.apache.org by ti...@apache.org on 2021/04/16 03:19:57 UTC

svn commit: r1888810 - /pdfbox/branches/1.8/jempbox/src/main/java/org/apache/jempbox/xmp/XMPSchema.java

Author: tilman
Date: Fri Apr 16 03:19:56 2021
New Revision: 1888810

URL: http://svn.apache.org/viewvc?rev=1888810&view=rev
Log:
PDFBOX-5165: optimize loop by using getNextSibling() instead of items(i), by Maruan Sahyoun

Modified:
    pdfbox/branches/1.8/jempbox/src/main/java/org/apache/jempbox/xmp/XMPSchema.java

Modified: pdfbox/branches/1.8/jempbox/src/main/java/org/apache/jempbox/xmp/XMPSchema.java
URL: http://svn.apache.org/viewvc/pdfbox/branches/1.8/jempbox/src/main/java/org/apache/jempbox/xmp/XMPSchema.java?rev=1888810&r1=1888809&r2=1888810&view=diff
==============================================================================
--- pdfbox/branches/1.8/jempbox/src/main/java/org/apache/jempbox/xmp/XMPSchema.java (original)
+++ pdfbox/branches/1.8/jempbox/src/main/java/org/apache/jempbox/xmp/XMPSchema.java Fri Apr 16 03:19:56 2021
@@ -424,13 +424,20 @@ public class XMPSchema
             if (bagList.getLength() > 0)
             {
                 Element bag = (Element) bagList.item(0);
+                // PDFBOX-5165: using item(i) is too slow
+                Node child = bag.getFirstChild();
                 retval = new ArrayList<String>();
-                NodeList items = bag.getElementsByTagName("rdf:li");
-                int len = items.getLength(); // slow
-                for (int i = 0; i < len; i++)
+                while (child != null)
                 {
-                    Element li = (Element) items.item(i);
-                    retval.add(XMLUtil.getStringValue(li));
+                    if (child.getNodeType() == Node.ELEMENT_NODE)
+                    {
+                        Element el = (Element) child;
+                        if (el.getTagName().equals("rdf:li"))
+                        {
+                            retval.add(XMLUtil.getStringValue(el));
+                        }
+                    }
+                    child = child.getNextSibling();
                 }
                 retval = Collections.unmodifiableList(retval);
             }
@@ -605,13 +612,20 @@ public class XMPSchema
             if (bagList.getLength() > 0)
             {
                 Element bag = (Element) bagList.item(0);
+                // PDFBOX-5165: using item(i) is too slow
+                Node child = bag.getFirstChild();
                 retval = new ArrayList<String>();
-                NodeList items = bag.getElementsByTagName("rdf:li");
-                int len = items.getLength(); // slow
-                for (int i = 0; i < len; i++)
+                while (child != null)
                 {
-                    Element li = (Element) items.item(i);
-                    retval.add(XMLUtil.getStringValue(li));
+                    if (child.getNodeType() == Node.ELEMENT_NODE)
+                    {
+                        Element el = (Element) child;
+                        if (el.getTagName().equals("rdf:li"))
+                        {
+                            retval.add(XMLUtil.getStringValue(el));
+                        }
+                    }
+                    child = child.getNextSibling();
                 }
                 retval = Collections.unmodifiableList(retval);
             }
@@ -638,13 +652,20 @@ public class XMPSchema
             if (bagList.getLength() > 0)
             {
                 Element bag = (Element) bagList.item(0);
+                // PDFBOX-5165: using item(i) is too slow
+                Node child = bag.getFirstChild();
                 retval = new ArrayList<ResourceEvent>();
-                NodeList items = bag.getElementsByTagName("rdf:li");
-                int len = items.getLength(); // slow
-                for (int i = 0; i < len; i++)
+                while (child != null)
                 {
-                    Element li = (Element) items.item(i);
-                    retval.add(new ResourceEvent(li));
+                    if (child.getNodeType() == Node.ELEMENT_NODE)
+                    {
+                        Element el = (Element) child;
+                        if (el.getTagName().equals("rdf:li"))
+                        {
+                            retval.add(new ResourceEvent(el));
+                        }
+                    }
+                    child = child.getNextSibling();
                 }
                 retval = Collections.unmodifiableList(retval);
             }