Changeset 2:d6501273745b in rrlib_xml-java


Ignore:
Timestamp:
15.12.2013 05:57:02 (8 years ago)
Author:
Max Reichardt <mreichardt@…>
Branch:
default
Phase:
public
Message:

Fixed Child Iteration and removed old, non-Java-Style iterator

File:
1 edited

Legend:

Unmodified
Added
Removed
  • XMLNode.java

    r1 r2  
    184184     * a String reference. 
    185185     * 
    186      * @exception XMLException is thrown if the node does not contain plain text content 
    187      * 
    188186     * @return A reference to the plain text content 
    189187     */ 
     
    196194            } 
    197195        } 
    198         throw new XMLException("This node does not have any text content!"); 
     196        return ""; 
    199197    } 
    200198 
     
    490488 
    491489    /** 
    492      * @return An iterator to the first of this node's children which are XMLNodes themselves 
    493      */ 
    494     public ConstChildIterator getChildrenBegin() { 
    495         return new ConstChildIterator(); 
    496     } 
    497  
    498     /** 
    499490     * Use this way: 
    500491     * 
     
    510501 
    511502    /** 
    512      * @return An end-iterator mark to mark the end of children traversal 
    513      */ 
    514     public XMLNode getChildrenEnd() { 
    515         return null; 
    516     } 
    517  
    518     /** 
    519503     * ChildIterator. 
    520504     * 
     
    522506     *  for (ConstChildIterator it = node.getChildrenBegin(); it.get() != node.getChildrenEnd(); it.next()) 
    523507     */ 
    524     public class ConstChildIterator implements Iterator<XMLNode>, Iterable<XMLNode> { 
    525  
    526         private XMLNode current = getNextNode(node.getFirstChild()); 
     508    private class ConstChildIterator implements Iterator<XMLNode>, Iterable<XMLNode> { 
     509 
     510        private XMLNode next = getNextNode(node.getFirstChild()); 
    527511 
    528512        private XMLNode getNextNode(Node nextNode) { 
     
    537521 
    538522        /** 
    539          * @return Current node 
    540          */ 
    541         public XMLNode get() { 
    542             return current; 
    543         } 
    544  
    545         /** 
    546523         * Advance to next node 
    547524         * 
     
    549526         */ 
    550527        public XMLNode next() { 
    551             current = getNextNode(current.node.getNextSibling()); 
     528            XMLNode current = next; 
     529            next = getNextNode(next.node.getNextSibling()); 
    552530            return current; 
    553531        } 
     
    555533        @Override 
    556534        public boolean hasNext() { 
    557             Node nextNode = current.node.getNextSibling(); 
    558             while (nextNode != null) { 
    559                 if (nextNode.getNodeType() == Node.ELEMENT_NODE) { 
    560                     return true; 
    561                 } 
    562                 nextNode = nextNode.getNextSibling(); 
    563             } 
    564             return false; 
     535            return next != null; 
    565536        } 
    566537 
     
    581552    public int childCount() { 
    582553        int i = 0; 
    583         for (ConstChildIterator it = getChildrenBegin(); it.get() != getChildrenEnd(); it.next()) { 
     554        for (@SuppressWarnings("unused") XMLNode child : children()) { 
    584555            i++; 
    585556        } 
Note: See TracChangeset for help on using the changeset viewer.