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