Search in sources :

Example 41 with EndElement

use of javax.xml.stream.events.EndElement in project jvarkit by lindenb.

the class DiseaseOntoglogyTree method parseTerm.

private void parseTerm(StartElement root, XMLEventReader r) throws IOException, XMLStreamException {
    Attribute aboutAtt = root.getAttributeByName(rdfAbout);
    if (aboutAtt == null) {
        throw new IOException("no rdf:about");
    }
    TermImpl term = uri2term.get(aboutAtt.getValue());
    if (term == null) {
        term = new TermImpl();
        term.accession = aboutAtt.getValue();
        if (term.accession.startsWith(OBO)) {
            term.accession = term.accession.substring(OBO.length()).replace('_', ':');
        }
        term.name = term.accession;
        uri2term.put(aboutAtt.getValue(), term);
    }
    while (r.hasNext()) {
        XMLEvent evt = r.nextEvent();
        if (evt.isStartElement()) {
            StartElement E = evt.asStartElement();
            QName qN = E.getName();
            if (OBOINOWL.equals(qN.getNamespaceURI())) {
                if (qN.getLocalPart().equals("id")) {
                    term.accession = r.getElementText();
                }
            } else if (RDFS.equals(qN.getNamespaceURI())) {
                if (qN.getLocalPart().equals("label")) {
                    term.name = r.getElementText();
                } else if (qN.getLocalPart().equals("subClassOf")) {
                    Attribute rsrc = E.getAttributeByName(rdfRsrc);
                    if (rsrc == null)
                        throw new IOException("att missing " + rdfRsrc + " for " + aboutAtt.getValue());
                    String parentUri = rsrc.getValue();
                    term.parents.add(parentUri);
                    TermImpl parentTerm = this.uri2term.get(parentUri);
                    if (parentTerm == null) {
                        parentTerm = new TermImpl();
                        parentTerm.accession = parentUri;
                        if (parentTerm.accession.startsWith(OBO)) {
                            parentTerm.accession = parentTerm.accession.substring(OBO.length()).replace('_', ':');
                        }
                        parentTerm.name = parentTerm.accession;
                        uri2term.put(parentUri, parentTerm);
                    }
                    parentTerm.children.add(aboutAtt.getValue());
                }
            }
        } else if (evt.isEndElement()) {
            EndElement E = evt.asEndElement();
            QName qN = E.getName();
            if (qN.getLocalPart().equals("Class") && OWL.equals(qN.getNamespaceURI())) {
                break;
            }
        }
    }
}
Also used : StartElement(javax.xml.stream.events.StartElement) Attribute(javax.xml.stream.events.Attribute) EndElement(javax.xml.stream.events.EndElement) QName(javax.xml.namespace.QName) XMLEvent(javax.xml.stream.events.XMLEvent) IOException(java.io.IOException)

Aggregations

EndElement (javax.xml.stream.events.EndElement)41 XMLEvent (javax.xml.stream.events.XMLEvent)32 StartElement (javax.xml.stream.events.StartElement)30 QName (javax.xml.namespace.QName)15 XMLEventReader (javax.xml.stream.XMLEventReader)12 Attribute (javax.xml.stream.events.Attribute)12 Characters (javax.xml.stream.events.Characters)11 XMLStreamException (javax.xml.stream.XMLStreamException)10 XMLInputFactory (javax.xml.stream.XMLInputFactory)9 InputStream (java.io.InputStream)5 ArrayList (java.util.ArrayList)5 HashMap (java.util.HashMap)4 Test (org.junit.Test)4 IOException (java.io.IOException)3 Namespace (javax.xml.stream.events.Namespace)3 ByteArrayInputStream (java.io.ByteArrayInputStream)2 FileNotFoundException (java.io.FileNotFoundException)2 BigInteger (java.math.BigInteger)2 Base64 (java.util.Base64)2 Iterator (java.util.Iterator)2