Package nu.xom

Examples of nu.xom.Element


        case ATTRIBUTE: {
          throw new BinaryParsingException("Unreachable attribute");
        }
        case BEGIN_ELEMENT: {
          if (factory.getClass() == NodeFactory.class) { // fast path
            Element root = readStartTag(src, type);
            readElement(src, root, input); // reads entire subtree
            nodes = new Nodes(root);
          } else { // slow path
            Element root = readStartTagF(src, type, true);
            if (root == null) {
              throw new NullPointerException("Factory failed to create root element.");
            }
            doc.setRootElement(root);
            readElementF(src, root, input);
View Full Code Here


  public Node buildNode() throws ParsingException {
    if (nodeBuilder == null) nodeBuilder = new NodeBuilder();
   
    switch (reader.getEventType()) {
      case XMLStreamConstants.START_ELEMENT: {
        Element elem = readStartTag();
        addAttributes(elem);
        addNamespaceDeclarations(elem);
        return elem;
      }
      case XMLStreamConstants.END_ELEMENT: {
        Element elem = readStartTag();
        // StAX does not report attributes on END_ELEMENT
        addNamespaceDeclarations(elem);
        return elem;
      }
      case XMLStreamConstants.ATTRIBUTE: { // TODO: optimize
        Element elem = nodeBuilder.createElement("dummy", "");
        addAttributes(elem);
        return elem.getAttribute(0).copy();
      }
      case XMLStreamConstants.START_DOCUMENT:
      case XMLStreamConstants.END_DOCUMENT:
        return new NodeFactory().startMakingDocument();
      case XMLStreamConstants.PROCESSING_INSTRUCTION:
View Full Code Here

  private void readElement(ArrayByteList src, Element current, InputStream input)
    throws BinaryParsingException, IOException {
   
    while (true) {
      Node node = null;
      Element down = null;
      int type = src.get(); // look ahead
//      if (DEBUG) System.err.println("reading type = " + toString(type));
      switch (type & 0x07) { // three low bits indicate node type
        case TEXT: {
          node = readText(src, type);
View Full Code Here

        case TEXT: {
          nodes = readTextF(src, type);
          break;
        }
        case ATTRIBUTE: {
          Element elem = addAttributesAndNamespaces ? current : null;
          nodes = readAttributeF(src, elem, type);
          break;
        }
        case BEGIN_ELEMENT: {
          Element elem = readStartTagF(src, type, false);
          stack.push(elem); // even if it's null
          if (elem != null) {
            current.insertChild(elem, current.getChildCount());
            current = elem; // recurse down
          }
          addAttributesAndNamespaces = elem != null;
          continue;
        }
        case END_ELEMENT: {
          Element elem = stack.pop();
          if (elem == null) {
            continue; // skip element
          }
          ParentNode parent = elem.getParent();
          if (parent == null) throwTamperedWithParent();
          if (parent instanceof Document) {
            return; // we're done with the root element
          }
         
          current = (Element) parent; // recurse up
          nodes = factory.finishMakingElement(elem);
                    
          if (nodes.size()==1 && nodes.get(0)==elem) { // same node? (common case)
            continue; // optimization: no need to remove and then readd same element
          }
         
          if (current.getChildCount()-1 < 0) throwTamperedWithParent();       
          current.removeChild(current.getChildCount()-1);
          break;
        }
        case COMMENT: {
          nodes = readCommentF(src, type);
          break;
        }
        case NAMESPACE_DECLARATION: {
          Element elem = addAttributesAndNamespaces ? current : null;
          readNamespaceDeclaration(src, elem, type);
          continue;
        }
        case PROCESSING_INSTRUCTION: {
          nodes = readProcessingInstructionF(src);
View Full Code Here

          if (hasRootElement) throw new IllegalAddException(
            "StAX reader must not return multiple root elements");

          if (factory.getClass() == NodeFactory.class) { // fast path
            if (nodeBuilder == null) nodeBuilder = new NodeBuilder();
            Element root = readStartTag();
            addAttributes(root);
            addNamespaceDeclarations(root);
            readElement(root); // reads entire subtree
            nodes = new Nodes(root);
          } else { // slow path     
            Element root = readStartTagF(true);
            if (root == null) {
              throw new NullPointerException(
                "Factory failed to create root element.");
            }
            doc.setRootElement(root);
View Full Code Here

    while (true) {
      Node node = null;
     
      switch (reader.next()) {
        case XMLStreamConstants.START_ELEMENT: {
          Element elem = readStartTag();
          current.insertChild(elem, current.getChildCount());
          addAttributes(elem);
          addNamespaceDeclarations(elem);
          current = elem; // recurse down
          continue;
View Full Code Here

    while (true) {
      Nodes nodes;
      switch (reader.next()) { 
        case XMLStreamConstants.START_ELEMENT: {
          Element elem = readStartTagF(false);
          stack.add(elem); // push even if it's null
          if (elem != null) {
            current.appendChild(elem);
            addAttributesF(elem);
            addNamespaceDeclarations(elem);
            current = elem; // recurse down
          }
          continue;
        }
        case XMLStreamConstants.END_ELEMENT: {
          Element elem = (Element) stack.remove(stack.size()-1); // pop
          if (elem == null) {
            continue; // skip element
          }
          ParentNode parent = elem.getParent();
          if (parent == null) throwTamperedWithParent();
          if (parent instanceof Document) {
            return; // we're done with the root element
          }
         
View Full Code Here

   * @return a new element
   */
  public Element createElement(String qname, String uri) {
    if (uri == null) uri = "";
   
    Element elem = (Element) elements.get(qname, uri);
    if (elem == null) {
      elem = new Element(qname, uri);
      elements.put(qname, uri, elem);
    }
    return new Element(elem); // copy constructor is fast
  }
View Full Code Here

   
    private Element[] elems = new Element[10];
    private int size = 0;
   
    public Element pop() {
      Element elem = elems[size-1];
      elems[--size] = null; // help gc
      return elem;
    }
View Full Code Here

   
    private Element[] elems = new Element[10];
    private int size = 0;
   
    public Element pop() {
      Element elem = elems[size-1];
      elems[--size] = null; // help gc
      return elem;
    }
View Full Code Here

TOP

Related Classes of nu.xom.Element

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.