diff --git a/components/formats-bsd/src/loci/formats/in/OMEXMLReader.java b/components/formats-bsd/src/loci/formats/in/OMEXMLReader.java index 46b179fea6e..8151f264561 100644 --- a/components/formats-bsd/src/loci/formats/in/OMEXMLReader.java +++ b/components/formats-bsd/src/loci/formats/in/OMEXMLReader.java @@ -338,47 +338,53 @@ class OMEXMLHandler extends BaseHandler { private final StringBuilder xmlBuffer; private String currentQName; private Locator locator; + private boolean inPixels; public OMEXMLHandler() { xmlBuffer = new StringBuilder(); + inPixels = false; } @Override public void characters(char[] ch, int start, int length) { - if (currentQName.indexOf("BinData") < 0) { + if (!inPixels || currentQName.indexOf("BinData") < 0) { xmlBuffer.append(new String(ch, start, length)); } } @Override public void endElement(String uri, String localName, String qName) { + if (qName.indexOf("Pixels") != -1) { + inPixels = false; + } + xmlBuffer.append(""); } @Override - public void startElement(String ur, String localName, String qName, + public void startElement(String uri, String localName, String qName, Attributes attributes) { currentQName = qName; - if (qName.indexOf("BinData") == -1) { + if (qName.indexOf("Pixels") != -1) { + inPixels = true; + } + + if (inPixels && qName.indexOf("BinData") != -1) { + binData.add( + new BinData(locator.getLineNumber(), locator.getColumnNumber())); + String compress = attributes.getValue("Compression"); + compression.add(compress == null ? "" : compress); + xmlBuffer.append("<"); xmlBuffer.append(qName); for (int i=0; i"); - } - else { - binData.add( - new BinData(locator.getLineNumber(), locator.getColumnNumber())); - String compress = attributes.getValue("Compression"); - compression.add(compress == null ? "" : compress); - + } else { xmlBuffer.append("<"); xmlBuffer.append(qName); for (int i=0; i