public NodeList getChildNodes() { Iterator itr = null; if (nl == null) { // ok then this is the first call to this method list = new ArrayList(); nl = new NodeListImpl(list, fac); itr = doc.getChildren(); Object o; while(itr.hasNext()) { o = itr.next(); // Axiom returns OMText nodes even for newline characters // we don't want these to be returned from an XML Document node if (o instanceof OMText) { continue; } list.add(o); } } return nl; }
/** * Gets the valid element collection of an OMDocument. OMElement and OMProcessingInstruction * only * * @param document * @return Returns a collection of OMProcessingInstructions and OMElements */ public Collection getValidElements(OMDocument document) { ArrayList list = new ArrayList(); Iterator itr = document.getChildren(); while (itr.hasNext()) { OMNode node = (OMNode) itr.next(); if (node.getType() == OMNode.ELEMENT_NODE || node.getType() == OMNode.PI_NODE) list.add(node); } return list; }
/** * Simple utility that takes an XMLStreamReader and writes it * to an XMLStreamWriter * @param reader * @param writer * @throws XMLStreamException */ public static void reader2writer(XMLStreamReader reader, XMLStreamWriter writer) throws XMLStreamException { OMXMLParserWrapper builder = OMXMLBuilderFactory.createStAXOMBuilder(reader); try { OMDocument omDocument = builder.getDocument(); Iterator it = omDocument.getChildren(); while (it.hasNext()) { OMNode omNode = (OMNode) it.next(); omNode.serializeAndConsume(writer); } } finally { builder.close(); } } }
/** * Simple utility that takes an XMLStreamReader and writes it * to an XMLStreamWriter * @param reader * @param writer * @throws XMLStreamException */ private static void reader2writer(XMLStreamReader reader, XMLStreamWriter writer) throws XMLStreamException { StAXOMBuilder builder = new StAXOMBuilder(reader); try { OMDocument omDocument = builder.getDocument(); Iterator it = omDocument.getChildren(); while (it.hasNext()) { // TODO: this is extremely inefficient since next() will actually build the node! OMNode omNode = (OMNode) it.next(); // TODO: quick fix required because OMChildrenIterator#next() no longer builds the node omNode.getNextOMSibling(); omNode.serializeAndConsume(writer); } } finally { builder.close(); } }
/** * Create a XML sequence from string inputstream with a given charset. * * @param xmlStream XML imput stream * @param charset Charset to be used for parsing * @return XML Sequence */ @SuppressWarnings("unchecked") public static BXML<?> parse(InputStream xmlStream, String charset) { BValueArray elementsSeq = new BValueArray(); OMDocument doc; try { doc = OMXMLBuilderFactory.createOMBuilder(STAX_PARSER_CONFIGURATION, xmlStream, charset).getDocument(); Iterator<OMNode> docChildItr = doc.getChildren(); int index = 0; while (docChildItr.hasNext()) { elementsSeq.add(index++, new BXMLItem(docChildItr.next())); } } catch (DeferredParsingException e) { throw new BallerinaException(e.getCause().getMessage()); } catch (Throwable e) { throw new BallerinaException("failed to create xml: " + e.getMessage()); } return new BXMLSequence(elementsSeq); }
/** * Create a XML sequence from string reader. * * @param reader XML reader * @return XML Sequence */ @SuppressWarnings("unchecked") public static BXML<?> parse(Reader reader) { BValueArray elementsSeq = new BValueArray(); OMDocument doc; try { doc = OMXMLBuilderFactory.createOMBuilder(STAX_PARSER_CONFIGURATION, reader).getDocument(); Iterator<OMNode> docChildItr = doc.getChildren(); int i = 0; while (docChildItr.hasNext()) { elementsSeq.add(i++, new BXMLItem(docChildItr.next())); } } catch (DeferredParsingException e) { throw new BallerinaException(e.getCause().getMessage()); } catch (Throwable e) { throw new BallerinaException("failed to create xml: " + e.getMessage()); } return new BXMLSequence(elementsSeq); }
/** * Create a XML sequence from string inputstream. * * @param xmlStream XML input stream * @return XML Sequence */ @SuppressWarnings("unchecked") public static BXML<?> parse(InputStream xmlStream) { BValueArray elementsSeq = new BValueArray(); OMDocument doc; try { doc = OMXMLBuilderFactory.createOMBuilder(STAX_PARSER_CONFIGURATION, xmlStream).getDocument(); Iterator<OMNode> docChildItr = doc.getChildren(); int i = 0; while (docChildItr.hasNext()) { elementsSeq.add(i++, new BXMLItem(docChildItr.next())); } } catch (DeferredParsingException e) { throw new BallerinaException(e.getCause().getMessage()); } catch (Throwable e) { throw new BallerinaException("failed to create xml: " + e.getMessage()); } return new BXMLSequence(elementsSeq); }