public void testGetChildNodes2() { MemTreeBuilder builder = new MemTreeBuilder(); builder.startDocument(); builder.startElement(new QName("top", null, null), null); builder.startElement(new QName("child1", null, null), null); builder.endElement(); builder.startElement(new QName("child2", null, null), null); builder.endElement(); builder.endElement(); builder.endDocument(); DocumentImpl doc = builder.getDocument(); Node top = doc.getFirstChild(); assertEquals(Node.ELEMENT_NODE, top.getNodeType()); assertEquals("top", top.getNodeName()); assertEquals(2, top.getChildNodes().getLength()); }
/* (non-Javadoc) * @see org.xml.sax.ContentHandler#startElement(java.lang.String, java.lang.String, java.lang.String, org.xml.sax.Attributes) */ public void startElement(String namespaceURI, String localName, String qName, Attributes atts) throws SAXException { builder.startElement(namespaceURI, localName, qName, atts); if (namespaces != null) { for (final Map.Entry<String, String> entry : namespaces.entrySet()) { builder.namespaceNode(entry.getKey().toString(), entry.getValue().toString()); } } for (int i = 0; i < atts.getLength(); i++) { if (atts.getQName(i).startsWith("xmlns")) { final String prefix = atts.getLocalName(i); final String uri = atts.getValue(i); if ((namespaces == null) || !namespaces.containsKey(prefix)) { builder.namespaceNode(prefix, uri); } } } namespaces = null; }
/* (non-Javadoc) * @see org.xml.sax.ContentHandler#ignorableWhitespace(char[], int, int) */ public void ignorableWhitespace(char[] ch, int start, int length) throws SAXException { builder.characters(ch, start, length); }
/* (non-Javadoc) * @see org.xml.sax.ContentHandler#characters(char[], int, int) */ public void characters(char[] ch, int start, int length) throws SAXException { builder.characters(ch, start, length); }
/* (non-Javadoc) * @see org.xml.sax.ContentHandler#startDocument() */ public void startDocument() throws SAXException { builder.startDocument(); }
/* (non-Javadoc) * @see org.xml.sax.ContentHandler#endDocument() */ public void endDocument() throws SAXException { builder.endDocument(); }
public Document getDocument() { return (builder.getDocument()); }
/* (non-Javadoc) * @see org.xml.sax.ext.LexicalHandler#comment(char[], int, int) */ public void comment(char[] ch, int start, int length) throws SAXException { builder.comment(ch, start, length); }
/* (non-Javadoc) * @see org.xml.sax.ContentHandler#endElement(java.lang.String, java.lang.String, java.lang.String) */ public void endElement(String namespaceURI, String localName, String qName) throws SAXException { builder.endElement(); }
/* (non-Javadoc) * @see org.xml.sax.ContentHandler#processingInstruction(java.lang.String, java.lang.String) */ public void processingInstruction(String target, String data) throws SAXException { builder.processingInstruction(target, data); }
@Test public void testGetElementsByTagName() { MemTreeBuilder builder = new MemTreeBuilder(); builder.startDocument(); builder.startElement(new QName("xquery", null, null), null); builder.startElement(new QName("builtin-modules", null, null), null); AttributesImpl attrs = new AttributesImpl(); attrs.addAttribute( null, "class", "class", "string", "org.exist.xquery.functions.util.UtilModule"); attrs.addAttribute(null, "uri", "uri", "string", "http://exist-db.org/xquery/util"); builder.startElement(new QName("module", null, null), attrs); builder.endElement(); attrs = new AttributesImpl(); attrs.addAttribute( null, "class", "class", "string", "org.exist.xquery.functions.request.RequestModule"); attrs.addAttribute(null, "uri", "uri", "string", "http://exist-db.org/xquery/request"); builder.startElement(new QName("module", null, null), attrs); attrs = new AttributesImpl(); attrs.addAttribute(null, "name", "name", "string", "stream"); attrs.addAttribute(null, "value", "value", "string", "true"); builder.startElement(new QName("parameter", null, null), attrs); builder.endElement(); builder.endElement(); attrs = new AttributesImpl(); attrs.addAttribute( null, "class", "class", "string", "org.exist.xquery.functions.util.ResponseModule"); attrs.addAttribute(null, "uri", "uri", "string", "http://exist-db.org/xquery/response"); builder.startElement(new QName("module", null, null), attrs); builder.endElement(); attrs = new AttributesImpl(); attrs.addAttribute( null, "class", "class", "string", "org.exist.xquery.functions.util.SessionModule"); attrs.addAttribute(null, "uri", "uri", "string", "http://exist-db.org/xquery/session"); builder.startElement(new QName("module", null, null), attrs); builder.endElement(); builder.endElement(); builder.endElement(); builder.endDocument(); DocumentImpl doc = builder.getDocument(); Node nXQuery = doc.getFirstChild(); assertTrue(nXQuery.getNodeType() == Node.ELEMENT_NODE); assertTrue(nXQuery.getLocalName().equals("xquery")); Node nBuiltinModules = nXQuery.getFirstChild(); assertTrue(nBuiltinModules.getNodeType() == Node.ELEMENT_NODE); assertTrue(nBuiltinModules.getLocalName().equals("builtin-modules")); NodeList nlModules = nBuiltinModules.getChildNodes(); for (int i = 0; i < nlModules.getLength(); i++) { Node nModule = nlModules.item(i); assertTrue(nModule.getNodeType() == Node.ELEMENT_NODE); assertTrue(nModule.getLocalName().equals("module")); Element eModule = (Element) nModule; NodeList nlParameter = eModule.getElementsByTagName("parameter"); if (eModule .getAttribute("class") .equals("org.exist.xquery.functions.request.RequestModule")) { assertEquals(1, nlParameter.getLength()); } else { assertEquals(0, nlParameter.getLength()); } } }