Changeset 5796 for SRUClient


Ignore:
Timestamp:
11/12/14 00:04:20 (10 years ago)
Author:
Oliver Schonefeld
Message:
  • fix parsing in 'skipContent' case
File:
1 edited

Legend:

Unmodified
Added
Removed
  • SRUClient/trunk/src/main/java/eu/clarin/sru/client/XmlStreamReaderUtils.java

    r5750 r5796  
    4343            String namespaceURI, String localName, boolean required,
    4444            boolean attributes) throws XMLStreamException {
    45         // System.err.println("readStart (" + localName + ", required = " +
    46         // required + ") @ " + toReadable(reader));
    4745        if (!reader.isEndElement()) {
    4846            while (reader.hasNext()) {
    49                 // System.err.println("  LOOP: " + dumpState());
    5047                if (reader.isWhiteSpace()) {
    5148                    reader.next();
     
    5552                    if (namespaceURI.equals(reader.getNamespaceURI()) &&
    5653                            localName.equals(reader.getLocalName())) {
    57                         // System.err.print("--> found ");
    5854                        if (!attributes) {
    59                             // System.err.print("and consumed ");
    6055                            reader.next(); // skip to next event
    6156                        }
    62                         // System.err.println("@ " + toReadable(reader));
    6357                        return true;
    6458                    }
     
    7266        }
    7367        if (required) {
    74             // System.err.println("--> error, not found @ " +
    75             // toReadable(reader));
    7668            throw new XMLStreamException("expected element '" +
    7769                    new QName(namespaceURI, localName) + "', but found '" +
    7870                    reader.getName() + "'", reader.getLocation());
    7971        }
    80         // System.err.println("--> not found @ " + toReadable(reader));
    8172        return false;
    8273    }
     
    9182    public static void readEnd(XMLStreamReader reader, String namespaceURI,
    9283            String localName, boolean skipContent) throws XMLStreamException {
    93         // System.err.println("readEnd (" + localName + ") @ " + dumpState() +
    94         // ", skipContent = " + skipContent);
    9584        int level = 1;
    9685        while (reader.hasNext()) {
    97             // System.err.println("  LOOP " + dumpState() + " [" +
    98             // level + "]");
    9986            if (reader.isWhiteSpace()) {
    10087                reader.next();
     
    10794                }
    10895                if (reader.isStartElement()) {
    109                     if (!(namespaceURI.equals(reader.getNamespaceURI()) &&
    110                             localName.equals(reader.getLocalName()))) {
    111                         level++;
    112                     }
     96                    level++;
    11397                    reader.next();
    11498                    continue;
    11599                }
    116             }
     100            } // skipContent
    117101            if (reader.isEndElement()) {
    118102                level--;
    119                 // System.err.println("   @END-TAG: " + dumpState() + " [" +
    120                 // level + "]");
    121103                if (level == 0) {
    122104                    if (namespaceURI.equals(reader.getNamespaceURI()) &&
     
    127109                        throw new XMLStreamException("expected end tag for '" +
    128110                                new QName(namespaceURI, localName) +
    129                                 "', but found '" + reader.getName() + "'",
    130                                 reader.getLocation());
     111                                "', but found end tag for '" +
     112                                reader.getName() + "'", reader.getLocation());
    131113                    }
    132                 }
    133             }
    134             reader.next();
    135         }
    136         // System.err.println("--> ok @ " + dumpState());
     114                } else {
     115                    reader.next(); // consume tag
     116                }
     117            } else {
     118                if (reader.isStartElement()) {
     119                    throw new XMLStreamException("expected end tag for '" +
     120                            new QName(namespaceURI, localName) +
     121                            "', but found start tag for '" + reader.getName() +
     122                            "'", reader.getLocation());
     123                } else {
     124                    throw new XMLStreamException("expected end tag for '" +
     125                            new QName(namespaceURI, localName) + "'",
     126                            reader.getLocation());
     127                }
     128            }
     129        } // while
    137130    }
    138131
     
    261254
    262255
     256    public static void skipTag(XMLStreamReader reader, String namespaceURI,
     257            String localName, boolean required) throws XMLStreamException {
     258        if (readStart(reader, namespaceURI, localName, required)) {
     259            readEnd(reader, namespaceURI, localName, true);
     260        }
     261    }
     262
     263
     264    public static void skipTag(XMLStreamReader reader, String namespaceURI,
     265            String localName) throws XMLStreamException {
     266        skipTag(reader, namespaceURI, localName, false);
     267    }
     268
     269
    263270    public static void consumeStart(XMLStreamReader reader)
    264271            throws XMLStreamException {
Note: See TracChangeset for help on using the changeset viewer.