aboutsummaryrefslogtreecommitdiffstats
path: root/src/ooxml/java/org/apache/poi/xssf/eventusermodel
diff options
context:
space:
mode:
authorYegor Kozlov <yegor@apache.org>2012-03-11 07:19:07 +0000
committerYegor Kozlov <yegor@apache.org>2012-03-11 07:19:07 +0000
commit1cbefe6afbca61839950d9018dc8b6809f2c974c (patch)
treef2bab6fba1aa6703550041a14be74d0355bd2640 /src/ooxml/java/org/apache/poi/xssf/eventusermodel
parent07953482050cf00dad98e54a850abde0756cd567 (diff)
downloadpoi-1cbefe6afbca61839950d9018dc8b6809f2c974c.tar.gz
poi-1cbefe6afbca61839950d9018dc8b6809f2c974c.zip
Bugzilla 52835 - Tolerate missing Count and UniqueCount attributes when parsing shared strings table in XSSF eventusermodel
git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1299338 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'src/ooxml/java/org/apache/poi/xssf/eventusermodel')
-rw-r--r--src/ooxml/java/org/apache/poi/xssf/eventusermodel/ReadOnlySharedStringsTable.java23
1 files changed, 14 insertions, 9 deletions
diff --git a/src/ooxml/java/org/apache/poi/xssf/eventusermodel/ReadOnlySharedStringsTable.java b/src/ooxml/java/org/apache/poi/xssf/eventusermodel/ReadOnlySharedStringsTable.java
index 52e2c258ae..8a4b139ff9 100644
--- a/src/ooxml/java/org/apache/poi/xssf/eventusermodel/ReadOnlySharedStringsTable.java
+++ b/src/ooxml/java/org/apache/poi/xssf/eventusermodel/ReadOnlySharedStringsTable.java
@@ -19,6 +19,7 @@ package org.apache.poi.xssf.eventusermodel;
import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;
+import java.util.List;
import javax.xml.parsers.ParserConfigurationException;
import javax.xml.parsers.SAXParser;
@@ -28,6 +29,7 @@ import org.apache.poi.openxml4j.opc.OPCPackage;
import org.apache.poi.openxml4j.opc.PackagePart;
import org.apache.poi.openxml4j.opc.PackageRelationship;
import org.apache.poi.xssf.usermodel.XSSFRelation;
+import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTRst;
import org.xml.sax.Attributes;
import org.xml.sax.InputSource;
import org.xml.sax.SAXException;
@@ -91,7 +93,7 @@ public class ReadOnlySharedStringsTable extends DefaultHandler {
/**
* The shared strings table.
*/
- private String[] strings;
+ private List<String> strings;
/**
* @param pkg
@@ -173,24 +175,28 @@ public class ReadOnlySharedStringsTable extends DefaultHandler {
* @return the item at the specified position in this Shared String table.
*/
public String getEntryAt(int idx) {
- return strings[idx];
+ return strings.get(idx);
+ }
+
+ public List<String> getItems() {
+ return strings;
}
//// ContentHandler methods ////
private StringBuffer characters;
private boolean tIsOpen;
- private int index;
public void startElement(String uri, String localName, String name,
Attributes attributes) throws SAXException {
if ("sst".equals(name)) {
String count = attributes.getValue("count");
+ if(count != null) this.count = Integer.parseInt(count);
String uniqueCount = attributes.getValue("uniqueCount");
- this.count = Integer.parseInt(count);
- this.uniqueCount = Integer.parseInt(uniqueCount);
- this.strings = new String[this.uniqueCount];
- index = 0;
+ if(uniqueCount != null) this.uniqueCount = Integer.parseInt(uniqueCount);
+
+ this.strings = new ArrayList<String>(this.uniqueCount);
+
characters = new StringBuffer();
} else if ("si".equals(name)) {
characters.setLength(0);
@@ -202,8 +208,7 @@ public class ReadOnlySharedStringsTable extends DefaultHandler {
public void endElement(String uri, String localName, String name)
throws SAXException {
if ("si".equals(name)) {
- strings[index] = characters.toString();
- ++index;
+ strings.add(characters.toString());
} else if ("t".equals(name)) {
tIsOpen = false;
}