Class XMLDoc

  • All Implemented Interfaces:
    XMLTag

    public final class XMLDoc
    extends java.lang.Object
    implements XMLTag
    • Method Summary

      All Methods Static Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      XMLTag addAttribute​(java.lang.String name, java.lang.String value)
      Create a new attribute for the current node
      XMLTag addAttribute​(org.w3c.dom.Attr attr)
      Add given attribute to current element
      XMLTag addCDATA​(java.lang.String data)
      Add a data node under the current node, and jump to the parent node.
      XMLTag addCDATA​(org.w3c.dom.CDATASection data)
      Add a CDATA note to the current tag
      XMLTag addDocument​(XMLTag tag)
      Inserts another XMLTag instance under the current tag.
      XMLTag addDocument​(org.w3c.dom.Document doc)
      Inserts another Document instance under the current tag
      XMLTag addNamespace​(java.lang.String prefix, java.lang.String namespaceURI)
      Add a namespace to the document
      XMLTag addTag​(XMLTag tag)
      Inserts another XMLTag tag hierarchy under the current tag.
      XMLTag addTag​(java.lang.String name)
      Create a tag under the current location and use it as the current node
      XMLTag addTag​(org.w3c.dom.Element tag)
      Inserts a Element instance and its hierarchy under the current tag
      XMLTag addText​(java.lang.String text)
      Add a text node under the current node, and jump to the parent node.
      XMLTag addText​(org.w3c.dom.Text text)
      Add a text note to the current tag
      private java.util.List<org.w3c.dom.Attr> attr​(org.w3c.dom.Element e)  
      private java.util.List<org.w3c.dom.Node> childs​(short type)  
      private java.util.List<org.w3c.dom.Element> childs​(org.w3c.dom.Element e)  
      XMLTag delete()
      Delete current tag and its childs.
      XMLTag deleteAttribute​(java.lang.String name)
      Delete an attribute of the current node.
      XMLTag deleteAttributeIfExists​(java.lang.String name)
      Delete an attribute of the current node, if it exists
      XMLTag deleteAttributes()
      Delete all existing attributes of current node
      XMLTag deleteChilds()
      Delete all existing elements of this node
      XMLTag deletePrefixes()
      Remove any prefix and namespaces contained in the tag name, childs and attributes, thus changing namespace and tag name.
      XMLTag duplicate()  
      java.lang.String findAttribute​(java.lang.String name)
      returns the attribute value of the current node or null if the attribute does not exist
      java.lang.String findAttribute​(java.lang.String name, java.lang.String relativeXpath, java.lang.Object... arguments)
      Returns the attribute value of the node pointed by given XPath expression or null if the attribute does not exist
      XMLTag forEach​(CallBack callBack, java.lang.String relativeXpath, java.lang.Object... arguments)
      Execute an action for each selected tags from the current node.
      XMLTag forEach​(java.lang.String xpath, CallBack callBack)  
      XMLTag forEachChild​(CallBack callBack)
      Execute an action for each child in the current node.
      static XMLTag from​(XMLTag tag, boolean ignoreNamespaces)  
      static XMLTag from​(java.io.File file, boolean ignoreNamespaces)  
      static XMLTag from​(java.io.InputStream is, boolean ignoreNamespaces)  
      static XMLTag from​(java.io.Reader reader, boolean ignoreNamespaces)  
      static XMLTag from​(java.lang.String xmlData, boolean ignoreNamespaces)  
      static XMLTag from​(java.net.URL xmlLocation, boolean ignoreNamespaces)  
      static XMLTag from​(javax.xml.transform.Source source, boolean ignoreNamespaces)  
      static XMLTag from​(org.w3c.dom.Node node, boolean ignoreNamespaces)  
      static XMLTag from​(org.xml.sax.InputSource source, boolean ignoreNamespaces)  
      static XMLTag fromCurrentTag​(XMLTag tag, boolean ignoreNamespaces)
      Create another XMLTag instance from the hierarchy under the current tag.
      java.lang.String getAttribute​(java.lang.String name)
      returns the attribute value of the current node
      java.lang.String getAttribute​(java.lang.String name, java.lang.String relativeXpath, java.lang.Object... arguments)
      Returns the attribute value of the node pointed by given XPath expression
      java.lang.String[] getAttributeNames()  
      java.lang.String getCDATA()  
      java.lang.String getCDATA​(java.lang.String relativeXpath, java.lang.Object... arguments)
      Get the CDATA of a selected node
      java.lang.String getCDATAorText()  
      java.lang.String getCDATAorText​(java.lang.String relativeXpath, java.lang.Object... arguments)
      Get the text of a sepcific node
      int getChildCount()  
      java.util.List<org.w3c.dom.Element> getChildElement()  
      java.lang.Iterable<XMLTag> getChilds()
      XMLTag tag = XMLDoc.newDocument(true) .addRoot("root").addTag("a") .gotoParent().addTag("b") .gotoParent().addTag("c") .gotoRoot(); assertEquals(tag.getCurrentTagName(), "root"); for (XMLTag xmlTag : tag.getChilds()) { if(xmlTag.getCurrentTagName().equals("b")) { break; } } assertEquals(tag.getCurrentTagName(), "b");
      java.lang.Iterable<XMLTag> getChilds​(java.lang.String relativeXpath, java.lang.Object... arguments)
      Create an iterable object over selected elements.
      javax.xml.namespace.NamespaceContext getContext()  
      org.w3c.dom.Element getCurrentTag()  
      java.lang.String getCurrentTagLocation()  
      java.lang.String getCurrentTagName()  
      XMLTag getInnerDocument()  
      java.lang.String getInnerText()  
      java.lang.String getPefix​(java.lang.String namespaceURI)
      Get the prefix of a namespace
      java.lang.String[] getPefixes​(java.lang.String namespaceURI)
      Get all bound prefixes of a namespace
      java.lang.String getText()  
      java.lang.String getText​(java.lang.String relativeXpath, java.lang.Object... arguments)
      Get the text of a sepcific node
      java.lang.String getTextOrCDATA()  
      java.lang.String getTextOrCDATA​(java.lang.String relativeXpath, java.lang.Object... arguments)
      Get the text of a sepcific node
      XMLTag gotoChild()
      Go to the only child element of the curent node.
      XMLTag gotoChild​(int i)
      Go to the Nth child of the curent node.
      XMLTag gotoChild​(java.lang.String nodeName)
      Go to the child found with given node name
      XMLTag gotoFirstChild()
      Go to the first child element of the curent node.
      XMLTag gotoFirstChild​(java.lang.String name)
      Go to the first child occurance found having given name
      XMLTag gotoLastChild()
      Go to the lastest child element of the curent node.
      XMLTag gotoLastChild​(java.lang.String name)
      Go to the last child occurance found having given name
      XMLTag gotoParent()
      Go to parent tag.
      XMLTag gotoRoot()
      Go to document root tag
      XMLTag gotoTag​(java.lang.String relativeXpath, java.lang.Object... arguments)
      Go to a specific node
      boolean hasAttribute​(java.lang.String name)
      Check wheter current tag contains an atribute
      boolean hasAttribute​(java.lang.String name, java.lang.String relativeXpath, java.lang.Object... arguments)
      Check if targeted tag has an attribute of given name
      boolean hasTag​(java.lang.String relativeXpath, java.lang.Object... arguments)
      Check if a tag exist in the document
      private boolean isElement​(org.w3c.dom.Node n)  
      static XMLDocBuilder newDocument​(boolean ignoreNamespaces)  
      java.lang.Boolean rawXpathBoolean​(java.lang.String relativeXpath, java.lang.Object... arguments)
      Execute an XPath expression directly using the Java XPath API, from the current node.
      org.w3c.dom.Node rawXpathNode​(java.lang.String relativeXpath, java.lang.Object... arguments)
      Execute an XPath expression directly using the Java XPath API, from the current node.
      org.w3c.dom.NodeList rawXpathNodeSet​(java.lang.String relativeXpath, java.lang.Object... arguments)
      Execute an XPath expression directly using the Java XPath API, from the current node.
      java.lang.Number rawXpathNumber​(java.lang.String relativeXpath, java.lang.Object... arguments)
      Execute an XPath expression directly using the Java XPath API, from the current node.
      java.lang.String rawXpathString​(java.lang.String relativeXpath, java.lang.Object... arguments)
      Execute an XPath expression directly using the Java XPath API, from the current node.
      XMLTag renameTo​(java.lang.String newNodeName)
      Replace current element name by another name
      XMLTag setAttribute​(java.lang.String name, java.lang.String value)
      Sets the new value on an existign attribute, and remains on the current tag.
      XMLTag setAttribute​(java.lang.String name, java.lang.String value, java.lang.String relativeXpath, java.lang.Object... arguments)
      Sets the new value on a targetted node's attribute, and remains on the current tag.
      XMLTag setAttributeIfExist​(java.lang.String name, java.lang.String value)
      Sets the new value on an attribute, and remains on the current tag.
      XMLTag setAttributeIfExist​(java.lang.String name, java.lang.String value, java.lang.String relativeXpath, java.lang.Object... arguments)
      Sets the new value on a targetted node's attribute, and remains on the current tag.
      XMLTag setCDATA​(java.lang.String data)
      Set the cdata in the current node.
      XMLTag setCDATA​(java.lang.String data, java.lang.String relativeXpath, java.lang.Object... arguments)
      Set the cdata in the targetted node.
      XMLTag setCDATAIfExist​(java.lang.String data, java.lang.String relativeXpath, java.lang.Object... arguments)
      Set the cdata in the targetted node.
      XMLTag setText​(java.lang.String text)
      Set the text in the current node.
      XMLTag setText​(java.lang.String text, java.lang.String relativeXpath, java.lang.Object... arguments)
      Set the text in the targetted node.
      XMLTag setTextIfExist​(java.lang.String text, java.lang.String relativeXpath, java.lang.Object... arguments)
      Set the text in the targetted node.
      byte[] toBytes()  
      byte[] toBytes​(java.lang.String encoding)  
      org.w3c.dom.Document toDocument()  
      java.io.OutputStream toOutputStream()  
      java.io.OutputStream toOutputStream​(java.lang.String encoding)  
      javax.xml.transform.Result toResult()  
      javax.xml.transform.Result toResult​(java.lang.String encoding)  
      XMLTag toResult​(javax.xml.transform.Result out)
      Converts this document to the result provided
      XMLTag toResult​(javax.xml.transform.Result out, java.lang.String encoding)
      Converts this document to the result provided, overriding default encoding of xml document
      javax.xml.transform.Source toSource()  
      XMLTag toStream​(java.io.OutputStream out)
      Write this document to a stream
      XMLTag toStream​(java.io.OutputStream out, java.lang.String encoding)
      Write this document to a stream
      XMLTag toStream​(java.io.Writer out)
      Write this document to a stream
      XMLTag toStream​(java.io.Writer out, java.lang.String encoding)
      Write this document to a stream
      java.lang.String toString()  
      java.lang.String toString​(java.lang.String encoding)  
      java.io.Writer toWriter()  
      java.io.Writer toWriter​(java.lang.String encoding)  
      ValidationResult validate​(java.net.URL... schemaLocations)
      Validate this document against specifief schemas
      ValidationResult validate​(javax.xml.transform.Source... schemas)
      Validate this document against specifief schemas
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
    • Field Detail

      • current

        org.w3c.dom.Element current
    • Method Detail

      • getContext

        public javax.xml.namespace.NamespaceContext getContext()
        Specified by:
        getContext in interface XMLTag
        Returns:
        the namespace context
      • hasAttribute

        public boolean hasAttribute​(java.lang.String name)
        Description copied from interface: XMLTag
        Check wheter current tag contains an atribute
        Specified by:
        hasAttribute in interface XMLTag
        Parameters:
        name - Attribute name
        Returns:
        true if the attribute is in current tag
      • hasAttribute

        public boolean hasAttribute​(java.lang.String name,
                                    java.lang.String relativeXpath,
                                    java.lang.Object... arguments)
        Description copied from interface: XMLTag
        Check if targeted tag has an attribute of given name
        Specified by:
        hasAttribute in interface XMLTag
        Parameters:
        name - the name of the attribute
        relativeXpath - XPath that target the tag
        arguments - optional arguments of xpath expression. Uses String.format() to build XPath expression.
        Returns:
        true if the tag exist with this attribute name
      • hasTag

        public boolean hasTag​(java.lang.String relativeXpath,
                              java.lang.Object... arguments)
        Description copied from interface: XMLTag
        Check if a tag exist in the document
        Specified by:
        hasTag in interface XMLTag
        Parameters:
        relativeXpath - XPath expression where the tag should be located
        arguments - XPath arguments. Uses String.format() to build XPath expression.
        Returns:
        true if the tag is exist
      • forEachChild

        public XMLTag forEachChild​(CallBack callBack)
        Description copied from interface: XMLTag
        Execute an action for each child in the current node.
        Specified by:
        forEachChild in interface XMLTag
        Parameters:
        callBack - Callback method to run after the current tag of the document has changed to a child
        Returns:
        this
      • forEach

        public XMLTag forEach​(CallBack callBack,
                              java.lang.String relativeXpath,
                              java.lang.Object... arguments)
        Description copied from interface: XMLTag
        Execute an action for each selected tags from the current node.
        Specified by:
        forEach in interface XMLTag
        Parameters:
        callBack - Callback method to run after the current tag of the document has changed to a child
        relativeXpath - XXath expression that select the node
        arguments - facultative Xpath expression arguments. Uses String.format() to build XPath expression.
        Returns:
        this
      • rawXpathString

        public java.lang.String rawXpathString​(java.lang.String relativeXpath,
                                               java.lang.Object... arguments)
        Description copied from interface: XMLTag
        Execute an XPath expression directly using the Java XPath API, from the current node.
        Specified by:
        rawXpathString in interface XMLTag
        Parameters:
        relativeXpath - The XPath expression
        arguments - facultative Xpath expression arguments. Uses String.format() to build XPath expression.
        Returns:
        The XPathConstants.STRING return type
      • rawXpathNumber

        public java.lang.Number rawXpathNumber​(java.lang.String relativeXpath,
                                               java.lang.Object... arguments)
        Description copied from interface: XMLTag
        Execute an XPath expression directly using the Java XPath API, from the current node.
        Specified by:
        rawXpathNumber in interface XMLTag
        Parameters:
        relativeXpath - The XPath expression
        arguments - facultative Xpath expression arguments. Uses String.format() to build XPath expression.
        Returns:
        The XPathConstants.NUMBER return type
      • rawXpathBoolean

        public java.lang.Boolean rawXpathBoolean​(java.lang.String relativeXpath,
                                                 java.lang.Object... arguments)
        Description copied from interface: XMLTag
        Execute an XPath expression directly using the Java XPath API, from the current node.
        Specified by:
        rawXpathBoolean in interface XMLTag
        Parameters:
        relativeXpath - The XPath expression
        arguments - facultative Xpath expression arguments. Uses String.format() to build XPath expression.
        Returns:
        The XPathConstants.BOOLEAN return type
      • rawXpathNode

        public org.w3c.dom.Node rawXpathNode​(java.lang.String relativeXpath,
                                             java.lang.Object... arguments)
        Description copied from interface: XMLTag
        Execute an XPath expression directly using the Java XPath API, from the current node.
        Specified by:
        rawXpathNode in interface XMLTag
        Parameters:
        relativeXpath - The XPath expression
        arguments - facultative Xpath expression arguments. Uses String.format() to build XPath expression.
        Returns:
        The XPathConstants.NODE return type
      • rawXpathNodeSet

        public org.w3c.dom.NodeList rawXpathNodeSet​(java.lang.String relativeXpath,
                                                    java.lang.Object... arguments)
        Description copied from interface: XMLTag
        Execute an XPath expression directly using the Java XPath API, from the current node.
        Specified by:
        rawXpathNodeSet in interface XMLTag
        Parameters:
        relativeXpath - The XPath expression
        arguments - facultative Xpath expression arguments. Uses String.format() to build XPath expression.
        Returns:
        The XPathConstants.NODESET return type
      • getPefix

        public java.lang.String getPefix​(java.lang.String namespaceURI)
        Description copied from interface: XMLTag
        Get the prefix of a namespace
        Specified by:
        getPefix in interface XMLTag
        Parameters:
        namespaceURI - The URI of the namespace
        Returns:
        the prefix or "" if not found ("" is the default prefix - see javadoc)
      • getPefixes

        public java.lang.String[] getPefixes​(java.lang.String namespaceURI)
        Description copied from interface: XMLTag
        Get all bound prefixes of a namespace
        Specified by:
        getPefixes in interface XMLTag
        Parameters:
        namespaceURI - The URI of the namespace
        Returns:
        a list of prefixes or an empty array.
      • addNamespace

        public XMLTag addNamespace​(java.lang.String prefix,
                                   java.lang.String namespaceURI)
        Description copied from interface: XMLTag
        Add a namespace to the document
        Specified by:
        addNamespace in interface XMLTag
        Parameters:
        prefix - The prefix of the namespace
        namespaceURI - The URI of the namespace
        Returns:
        this
      • addDocument

        public XMLTag addDocument​(XMLTag tag)
        Description copied from interface: XMLTag
        Inserts another XMLTag instance under the current tag. The whole document will be inserted.
        Specified by:
        addDocument in interface XMLTag
        Parameters:
        tag - The XMLTag instance to insert
        Returns:
        this
      • addDocument

        public XMLTag addDocument​(org.w3c.dom.Document doc)
        Description copied from interface: XMLTag
        Inserts another Document instance under the current tag
        Specified by:
        addDocument in interface XMLTag
        Parameters:
        doc - The Document instance to insert
        Returns:
        this
      • addTag

        public XMLTag addTag​(XMLTag tag)
        Description copied from interface: XMLTag
        Inserts another XMLTag tag hierarchy under the current tag. Only the current tag of the given document will be inserted with its hierarchy, not the whole document.
        Specified by:
        addTag in interface XMLTag
        Parameters:
        tag - The XMLTag current tag hierarchy to insert
        Returns:
        this
      • addTag

        public XMLTag addTag​(org.w3c.dom.Element tag)
        Description copied from interface: XMLTag
        Inserts a Element instance and its hierarchy under the current tag
        Specified by:
        addTag in interface XMLTag
        Parameters:
        tag - The Element instance to insert
        Returns:
        this
      • addTag

        public XMLTag addTag​(java.lang.String name)
        Description copied from interface: XMLTag
        Create a tag under the current location and use it as the current node
        Specified by:
        addTag in interface XMLTag
        Parameters:
        name - Name of the element to add
        Returns:
        this
      • addAttribute

        public XMLTag addAttribute​(java.lang.String name,
                                   java.lang.String value)
        Description copied from interface: XMLTag
        Create a new attribute for the current node
        Specified by:
        addAttribute in interface XMLTag
        Parameters:
        name - Name of the attribute to add
        value - value of the attribute to add
        Returns:
        this
      • addAttribute

        public XMLTag addAttribute​(org.w3c.dom.Attr attr)
        Description copied from interface: XMLTag
        Add given attribute to current element
        Specified by:
        addAttribute in interface XMLTag
        Parameters:
        attr - The attribute to insert
        Returns:
        this
      • addText

        public XMLTag addText​(java.lang.String text)
        Description copied from interface: XMLTag
        Add a text node under the current node, and jump to the parent node. This enables the create or quick documents like this:

        addTag("name").addText("Bob")addTag("sex").addText("M")addTag("age").addText("30")

        <name>Bob</name><sex>M</sex><age>30</age>

        Specified by:
        addText in interface XMLTag
        Parameters:
        text - the text to add
        Returns:
        this
      • addText

        public XMLTag addText​(org.w3c.dom.Text text)
        Description copied from interface: XMLTag
        Add a text note to the current tag
        Specified by:
        addText in interface XMLTag
        Parameters:
        text - The node to insert
        Returns:
        this
      • addCDATA

        public XMLTag addCDATA​(java.lang.String data)
        Description copied from interface: XMLTag
        Add a data node under the current node, and jump to the parent node. This enables the create or quick documents like this:

        addTag("name").addCDATA("Bob")addTag("sex").addCDATA("M")addTag("age").addCDATA("30")

        <name><![CDATA[Bob]]></name><sex><![CDATA[M]]></sex><age><![CDATA[30]]></age>

        Specified by:
        addCDATA in interface XMLTag
        Parameters:
        data - the data to add
        Returns:
        this
      • addCDATA

        public XMLTag addCDATA​(org.w3c.dom.CDATASection data)
        Description copied from interface: XMLTag
        Add a CDATA note to the current tag
        Specified by:
        addCDATA in interface XMLTag
        Parameters:
        data - The node to insert
        Returns:
        this
      • delete

        public XMLTag delete()
        Description copied from interface: XMLTag
        Delete current tag and its childs. If the current tag is the root tag of xml document, it cannot be delete. It can just be replaced. In this case, an exception is thrown
        Specified by:
        delete in interface XMLTag
        Returns:
        this
      • deleteChilds

        public XMLTag deleteChilds()
        Description copied from interface: XMLTag
        Delete all existing elements of this node
        Specified by:
        deleteChilds in interface XMLTag
        Returns:
        this
      • deleteAttributes

        public XMLTag deleteAttributes()
        Description copied from interface: XMLTag
        Delete all existing attributes of current node
        Specified by:
        deleteAttributes in interface XMLTag
        Returns:
        this
      • deleteAttribute

        public XMLTag deleteAttribute​(java.lang.String name)
        Description copied from interface: XMLTag
        Delete an attribute of the current node.
        Specified by:
        deleteAttribute in interface XMLTag
        Parameters:
        name - attribute name
        Returns:
        this
      • deleteAttributeIfExists

        public XMLTag deleteAttributeIfExists​(java.lang.String name)
        Description copied from interface: XMLTag
        Delete an attribute of the current node, if it exists
        Specified by:
        deleteAttributeIfExists in interface XMLTag
        Parameters:
        name - attribute name
        Returns:
        this
      • renameTo

        public XMLTag renameTo​(java.lang.String newNodeName)
        Description copied from interface: XMLTag
        Replace current element name by another name
        Specified by:
        renameTo in interface XMLTag
        Parameters:
        newNodeName - New name of the tag
        Returns:
        this
      • deletePrefixes

        public XMLTag deletePrefixes()
        Description copied from interface: XMLTag
        Remove any prefix and namespaces contained in the tag name, childs and attributes, thus changing namespace and tag name. This can be very useful if you are working in a document when you want to ignore namespaces, if you don't know the tag prefix
        Specified by:
        deletePrefixes in interface XMLTag
        Returns:
        this
      • getInnerDocument

        public XMLTag getInnerDocument()
        Specified by:
        getInnerDocument in interface XMLTag
        Returns:
        Another XMLTag instance in which the current tag becomes de root element of the new document, and it contains all inner elements as in the previous document.
      • getInnerText

        public java.lang.String getInnerText()
        Specified by:
        getInnerText in interface XMLTag
        Returns:
        The text representation of the inner nodes of the current node. The current node is outputed as the root element of inner tags.
      • gotoParent

        public XMLTag gotoParent()
        Description copied from interface: XMLTag
        Go to parent tag. Do nothing if we are already at root
        Specified by:
        gotoParent in interface XMLTag
        Returns:
        this
      • gotoRoot

        public XMLTag gotoRoot()
        Description copied from interface: XMLTag
        Go to document root tag
        Specified by:
        gotoRoot in interface XMLTag
        Returns:
        this
      • gotoChild

        public XMLTag gotoChild()
        Description copied from interface: XMLTag
        Go to the only child element of the curent node.
        Specified by:
        gotoChild in interface XMLTag
        Returns:
        this
      • gotoChild

        public XMLTag gotoChild​(int i)
        Description copied from interface: XMLTag
        Go to the Nth child of the curent node.
        Specified by:
        gotoChild in interface XMLTag
        Parameters:
        i - index of the child, from 1 to child element number
        Returns:
        this
      • gotoChild

        public XMLTag gotoChild​(java.lang.String nodeName)
        Description copied from interface: XMLTag
        Go to the child found with given node name
        Specified by:
        gotoChild in interface XMLTag
        Parameters:
        nodeName - name of the child to find.
        Returns:
        this
      • gotoFirstChild

        public XMLTag gotoFirstChild​(java.lang.String name)
                              throws XMLDocumentException
        Description copied from interface: XMLTag
        Go to the first child occurance found having given name
        Specified by:
        gotoFirstChild in interface XMLTag
        Parameters:
        name - Name of the child to go at
        Returns:
        this
        Throws:
        XMLDocumentException - If the current node has no child at all
      • gotoLastChild

        public XMLTag gotoLastChild​(java.lang.String name)
                             throws XMLDocumentException
        Description copied from interface: XMLTag
        Go to the last child occurance found having given name
        Specified by:
        gotoLastChild in interface XMLTag
        Parameters:
        name - Name of the child to go at
        Returns:
        this
        Throws:
        XMLDocumentException - If the current node has no child at all
      • gotoTag

        public XMLTag gotoTag​(java.lang.String relativeXpath,
                              java.lang.Object... arguments)
        Description copied from interface: XMLTag
        Go to a specific node
        Specified by:
        gotoTag in interface XMLTag
        Parameters:
        relativeXpath - XPath expresion
        arguments - to be replaced in xpath expression before compiling. Uses String.format() to build XPath expression.
        Returns:
        this
      • getCurrentTag

        public org.w3c.dom.Element getCurrentTag()
        Specified by:
        getCurrentTag in interface XMLTag
        Returns:
        the current tag
      • getChildCount

        public int getChildCount()
        Specified by:
        getChildCount in interface XMLTag
        Returns:
        The number of child for the current tag
      • getChilds

        public java.lang.Iterable<XMLTag> getChilds()
        Description copied from interface: XMLTag
        
         XMLTag tag = XMLDoc.newDocument(true)
                 .addRoot("root").addTag("a")
                 .gotoParent().addTag("b")
                 .gotoParent().addTag("c")
                 .gotoRoot();
         assertEquals(tag.getCurrentTagName(), "root");
         for (XMLTag xmlTag : tag.getChilds()) {
             if(xmlTag.getCurrentTagName().equals("b")) {
                 break;
             }
         }
         assertEquals(tag.getCurrentTagName(), "b");

        
         XMLTag tag = XMLDoc.newDocument(true)
                 .addRoot("root").addTag("a")
                 .gotoParent().addTag("b")
                 .gotoParent().addTag("c")
                 .gotoRoot();
         assertEquals(tag.getCurrentTagName(), "root");
         for (XMLTag xmlTag : tag.getChilds()) {
             System.out.println(xmlTag.getCurrentTagName());
         }
         assertEquals(tag.getCurrentTagName(), "root");
        Specified by:
        getChilds in interface XMLTag
        Returns:
        An iterable object over childs
      • getChilds

        public java.lang.Iterable<XMLTag> getChilds​(java.lang.String relativeXpath,
                                                    java.lang.Object... arguments)
        Description copied from interface: XMLTag
        Create an iterable object over selected elements. Act as the getChilds method: The current position of XMLTag is modified at each iteration. Thus, if you break in the iteration, the current position will not be the same as the position before.
        Specified by:
        getChilds in interface XMLTag
        Parameters:
        relativeXpath - XPath to select tags
        arguments - XPath arguments
        Returns:
        The iterable object
      • getChildElement

        public java.util.List<org.w3c.dom.Element> getChildElement()
        Specified by:
        getChildElement in interface XMLTag
        Returns:
        The child element's list
      • getCurrentTagName

        public java.lang.String getCurrentTagName()
        Specified by:
        getCurrentTagName in interface XMLTag
        Returns:
        the current tag name
      • getCurrentTagLocation

        public java.lang.String getCurrentTagLocation()
        Specified by:
        getCurrentTagLocation in interface XMLTag
        Returns:
        An XPath expression representing the current tag location in the document. If you are in the root node and run gotoTag() giving this XPath expression, you will return to the current node.
      • getAttribute

        public java.lang.String getAttribute​(java.lang.String name)
        Description copied from interface: XMLTag
        returns the attribute value of the current node
        Specified by:
        getAttribute in interface XMLTag
        Parameters:
        name - attribute name
        Returns:
        attribute value
      • findAttribute

        public java.lang.String findAttribute​(java.lang.String name)
        Description copied from interface: XMLTag
        returns the attribute value of the current node or null if the attribute does not exist
        Specified by:
        findAttribute in interface XMLTag
        Parameters:
        name - attribute name
        Returns:
        attribute value or null if no attribute
      • getAttribute

        public java.lang.String getAttribute​(java.lang.String name,
                                             java.lang.String relativeXpath,
                                             java.lang.Object... arguments)
        Description copied from interface: XMLTag
        Returns the attribute value of the node pointed by given XPath expression
        Specified by:
        getAttribute in interface XMLTag
        Parameters:
        name - attribute name
        relativeXpath - XPath expression
        arguments - facultative Xpath expression arguments. Uses String.format() to build XPath expression.
        Returns:
        attribute value
      • findAttribute

        public java.lang.String findAttribute​(java.lang.String name,
                                              java.lang.String relativeXpath,
                                              java.lang.Object... arguments)
                                       throws XMLDocumentException
        Description copied from interface: XMLTag
        Returns the attribute value of the node pointed by given XPath expression or null if the attribute does not exist
        Specified by:
        findAttribute in interface XMLTag
        Parameters:
        name - attribute name
        relativeXpath - XPath expression
        arguments - facultative Xpath expression arguments. Uses String.format() to build XPath expression.
        Returns:
        the attribute value or null if the attribute does not exist
        Throws:
        XMLDocumentException - targetted node does not exist or XPath expression is invalid
      • getAttributeNames

        public java.lang.String[] getAttributeNames()
        Specified by:
        getAttributeNames in interface XMLTag
        Returns:
        all attribute names of current node
      • getText

        public java.lang.String getText​(java.lang.String relativeXpath,
                                        java.lang.Object... arguments)
        Description copied from interface: XMLTag
        Get the text of a sepcific node
        Specified by:
        getText in interface XMLTag
        Parameters:
        relativeXpath - XPath expression that select the node
        arguments - facultative Xpath expression arguments. Uses String.format() to build XPath expression.
        Returns:
        the text of "" if none
      • getText

        public java.lang.String getText()
        Specified by:
        getText in interface XMLTag
        Returns:
        The text content of the current node, "" if none
      • getTextOrCDATA

        public java.lang.String getTextOrCDATA()
        Specified by:
        getTextOrCDATA in interface XMLTag
        Returns:
        The text content of the current node, if none tries to get the CDATA content, if none returns ""
      • getTextOrCDATA

        public java.lang.String getTextOrCDATA​(java.lang.String relativeXpath,
                                               java.lang.Object... arguments)
                                        throws XMLDocumentException
        Description copied from interface: XMLTag
        Get the text of a sepcific node
        Specified by:
        getTextOrCDATA in interface XMLTag
        Parameters:
        relativeXpath - XPath expression that select the node
        arguments - facultative Xpath expression arguments. Uses String.format() to build XPath expression.
        Returns:
        The text content of the current node, if none tries to get the CDATA content, if none returns ""
        Throws:
        XMLDocumentException - If the XPath expression is not valid or if the node does not exist
      • getCDATAorText

        public java.lang.String getCDATAorText()
        Specified by:
        getCDATAorText in interface XMLTag
        Returns:
        The CDATA content of the current node, if none tries to get the text content, if none returns ""
      • getCDATAorText

        public java.lang.String getCDATAorText​(java.lang.String relativeXpath,
                                               java.lang.Object... arguments)
                                        throws XMLDocumentException
        Description copied from interface: XMLTag
        Get the text of a sepcific node
        Specified by:
        getCDATAorText in interface XMLTag
        Parameters:
        relativeXpath - XPath expression that select the node
        arguments - facultative Xpath expression arguments. Uses String.format() to build XPath expression.
        Returns:
        The CDATA content of the current node, if none tries to get the text content, if none returns ""
        Throws:
        XMLDocumentException - If the XPath expression is not valid or if the node does not exist
      • getCDATA

        public java.lang.String getCDATA​(java.lang.String relativeXpath,
                                         java.lang.Object... arguments)
        Description copied from interface: XMLTag
        Get the CDATA of a selected node
        Specified by:
        getCDATA in interface XMLTag
        Parameters:
        relativeXpath - XPath expression that select the node
        arguments - facultative Xpath expression arguments. Uses String.format() to build XPath expression.
        Returns:
        the text of "" if none
      • getCDATA

        public java.lang.String getCDATA()
        Specified by:
        getCDATA in interface XMLTag
        Returns:
        The CDATA content of the current node, "" if none
      • toDocument

        public org.w3c.dom.Document toDocument()
        Specified by:
        toDocument in interface XMLTag
        Returns:
        the Document
      • toSource

        public javax.xml.transform.Source toSource()
        Specified by:
        toSource in interface XMLTag
        Returns:
        This document as Source
      • toString

        public java.lang.String toString()
        Specified by:
        toString in interface XMLTag
        Overrides:
        toString in class java.lang.Object
        Returns:
        a string representation of the document in UTF-8 (Unicode)
      • toString

        public java.lang.String toString​(java.lang.String encoding)
        Specified by:
        toString in interface XMLTag
        Parameters:
        encoding - destination encoding of XML document
        Returns:
        a string representation of the document
      • toBytes

        public byte[] toBytes()
        Specified by:
        toBytes in interface XMLTag
        Returns:
        This document representation as String bytes, using default encoding of the document
      • toBytes

        public byte[] toBytes​(java.lang.String encoding)
        Specified by:
        toBytes in interface XMLTag
        Parameters:
        encoding - The encoding to use
        Returns:
        This document representation as String bytes using sepcified ancoding
      • toStream

        public XMLTag toStream​(java.io.OutputStream out)
        Description copied from interface: XMLTag
        Write this document to a stream
        Specified by:
        toStream in interface XMLTag
        Parameters:
        out - The output result
        Returns:
        this
      • toStream

        public XMLTag toStream​(java.io.OutputStream out,
                               java.lang.String encoding)
        Description copied from interface: XMLTag
        Write this document to a stream
        Specified by:
        toStream in interface XMLTag
        Parameters:
        out - The output result
        encoding - The new encoding
        Returns:
        this
      • toStream

        public XMLTag toStream​(java.io.Writer out)
        Description copied from interface: XMLTag
        Write this document to a stream
        Specified by:
        toStream in interface XMLTag
        Parameters:
        out - The output result
        Returns:
        this
      • toStream

        public XMLTag toStream​(java.io.Writer out,
                               java.lang.String encoding)
        Description copied from interface: XMLTag
        Write this document to a stream
        Specified by:
        toStream in interface XMLTag
        Parameters:
        out - The output result
        encoding - The new encoding
        Returns:
        this
      • toResult

        public javax.xml.transform.Result toResult()
        Specified by:
        toResult in interface XMLTag
        Returns:
        The Result representation of this document. Useful when using web services for example.
      • toResult

        public javax.xml.transform.Result toResult​(java.lang.String encoding)
        Specified by:
        toResult in interface XMLTag
        Parameters:
        encoding - The new encoding
        Returns:
        The Result representation of this document. Useful when using web services for example.
      • toOutputStream

        public java.io.OutputStream toOutputStream()
        Specified by:
        toOutputStream in interface XMLTag
        Returns:
        A stream where the document has already been written into
      • toOutputStream

        public java.io.OutputStream toOutputStream​(java.lang.String encoding)
        Specified by:
        toOutputStream in interface XMLTag
        Parameters:
        encoding - The new encoding
        Returns:
        A stream where the document has already been written into
      • toWriter

        public java.io.Writer toWriter()
        Specified by:
        toWriter in interface XMLTag
        Returns:
        A stream where the document has already been written into
      • toWriter

        public java.io.Writer toWriter​(java.lang.String encoding)
        Specified by:
        toWriter in interface XMLTag
        Parameters:
        encoding - The new encoding
        Returns:
        A stream where the document has already been written into
      • toResult

        public XMLTag toResult​(javax.xml.transform.Result out)
        Description copied from interface: XMLTag
        Converts this document to the result provided
        Specified by:
        toResult in interface XMLTag
        Parameters:
        out - The output result
        Returns:
        this
      • toResult

        public XMLTag toResult​(javax.xml.transform.Result out,
                               java.lang.String encoding)
        Description copied from interface: XMLTag
        Converts this document to the result provided, overriding default encoding of xml document
        Specified by:
        toResult in interface XMLTag
        Parameters:
        out - The output result
        encoding - The new encoding
        Returns:
        this
      • validate

        public ValidationResult validate​(javax.xml.transform.Source... schemas)
        Description copied from interface: XMLTag
        Validate this document against specifief schemas
        Specified by:
        validate in interface XMLTag
        Parameters:
        schemas - A list of schemas
        Returns:
        A validation result object containing exception list occured if any
      • validate

        public ValidationResult validate​(java.net.URL... schemaLocations)
        Description copied from interface: XMLTag
        Validate this document against specifief schemas
        Specified by:
        validate in interface XMLTag
        Parameters:
        schemaLocations - A list of schemas
        Returns:
        A validation result object containing exception list occured if any
      • isElement

        private boolean isElement​(org.w3c.dom.Node n)
      • childs

        private java.util.List<org.w3c.dom.Element> childs​(org.w3c.dom.Element e)
      • attr

        private java.util.List<org.w3c.dom.Attr> attr​(org.w3c.dom.Element e)
      • childs

        private java.util.List<org.w3c.dom.Node> childs​(short type)
      • duplicate

        public XMLTag duplicate()
        Specified by:
        duplicate in interface XMLTag
        Returns:
        A new com.mycila.xmltool.XMLTag instance having the same properties and documents of the current instance. The current tag will also remain the same (this.getCurrentTagName().equals(this.duplicate().getCurrentTagName()))
      • setText

        public XMLTag setText​(java.lang.String text)
        Description copied from interface: XMLTag
        Set the text in the current node. This method will replace all existing text and cdata by the given text. Also Jump after to the parent node. This enables the quicly replace test on several nodes like this:

        gotoChild("name").setText("Bob").gotoChild("sex").setText("M").gotoChild("age").setText("30")

        <name>Bob</name><sex>M</sex><age>30</age>

        Specified by:
        setText in interface XMLTag
        Parameters:
        text - text to put under this node
        Returns:
        this
      • setText

        public XMLTag setText​(java.lang.String text,
                              java.lang.String relativeXpath,
                              java.lang.Object... arguments)
                       throws XMLDocumentException
        Description copied from interface: XMLTag
        Set the text in the targetted node. This method will replace all existing text and cdata by the given text, but remains on the current tag.
        Specified by:
        setText in interface XMLTag
        Parameters:
        text - text to put under this node
        relativeXpath - XPath expression that select the node
        arguments - facultative Xpath expression arguments. Uses String.format() to build XPath expression.
        Returns:
        this
        Throws:
        XMLDocumentException - If the XPath expression is invalid or if the node does not exist
      • setTextIfExist

        public XMLTag setTextIfExist​(java.lang.String text,
                                     java.lang.String relativeXpath,
                                     java.lang.Object... arguments)
                              throws XMLDocumentException
        Description copied from interface: XMLTag
        Set the text in the targetted node. This method will replace all existing text and cdata by the given text, but remains on the current tag. If the targetted node does not exist, do nothing.
        Specified by:
        setTextIfExist in interface XMLTag
        Parameters:
        text - text to put under this node
        relativeXpath - XPath expression that select the node
        arguments - facultative Xpath expression arguments. Uses String.format() to build XPath expression.
        Returns:
        this
        Throws:
        XMLDocumentException - If the XPath expression is invalid
      • setCDATA

        public XMLTag setCDATA​(java.lang.String data)
        Description copied from interface: XMLTag
        Set the cdata in the current node. This method will replace all existing text and cdata by the given cdata Also Jump after to the parent node. This enables the quicly replace test on several nodes like this:

        gotoChild("name").setText("Bob").gotoChild("sex").setText("M").gotoChild("age").setText("30")

        <name>Bob</name><sex>M</sex><age>30</age>

        Specified by:
        setCDATA in interface XMLTag
        Parameters:
        data - text to put under this node in a cdata section
        Returns:
        this
      • setCDATA

        public XMLTag setCDATA​(java.lang.String data,
                               java.lang.String relativeXpath,
                               java.lang.Object... arguments)
                        throws XMLDocumentException
        Description copied from interface: XMLTag
        Set the cdata in the targetted node. This method will replace all existing text and cdata by the given cdata, but remains on the current tag.
        Specified by:
        setCDATA in interface XMLTag
        Parameters:
        data - text to put under this node in a cdata section
        relativeXpath - XPath expression that select the node
        arguments - facultative Xpath expression arguments. Uses String.format() to build XPath expression.
        Returns:
        this
        Throws:
        XMLDocumentException - If the XPath expression is invalid or if the node does not exist
      • setCDATAIfExist

        public XMLTag setCDATAIfExist​(java.lang.String data,
                                      java.lang.String relativeXpath,
                                      java.lang.Object... arguments)
                               throws XMLDocumentException
        Description copied from interface: XMLTag
        Set the cdata in the targetted node. This method will replace all existing text and cdata by the given cdata, but remains on the current tag. If the targetted node does not exist, do nothing.
        Specified by:
        setCDATAIfExist in interface XMLTag
        Parameters:
        data - text to put under this node in a cdata section
        relativeXpath - XPath expression that select the node
        arguments - facultative Xpath expression arguments. Uses String.format() to build XPath expression.
        Returns:
        this
        Throws:
        XMLDocumentException - If the XPath expression is invalid
      • setAttribute

        public XMLTag setAttribute​(java.lang.String name,
                                   java.lang.String value)
                            throws XMLDocumentException
        Description copied from interface: XMLTag
        Sets the new value on an existign attribute, and remains on the current tag.
        Specified by:
        setAttribute in interface XMLTag
        Parameters:
        name - attribute name
        value - new attribute'svalue
        Returns:
        attribute value
        Throws:
        XMLDocumentException - If the attribute does not exist
      • setAttributeIfExist

        public XMLTag setAttributeIfExist​(java.lang.String name,
                                          java.lang.String value)
        Description copied from interface: XMLTag
        Sets the new value on an attribute, and remains on the current tag. If it does not exist, do nothing.
        Specified by:
        setAttributeIfExist in interface XMLTag
        Parameters:
        name - attribute name
        value - new attribute value
        Returns:
        attribute value
      • setAttribute

        public XMLTag setAttribute​(java.lang.String name,
                                   java.lang.String value,
                                   java.lang.String relativeXpath,
                                   java.lang.Object... arguments)
                            throws XMLDocumentException
        Description copied from interface: XMLTag
        Sets the new value on a targetted node's attribute, and remains on the current tag.
        Specified by:
        setAttribute in interface XMLTag
        Parameters:
        name - attribute name
        value - new attribute's value
        relativeXpath - XPath expression
        arguments - facultative Xpath expression arguments. Uses String.format() to build XPath expression.
        Returns:
        attribute value
        Throws:
        XMLDocumentException - Attribute does not exist, targetted node does not exit, or XPath expression is invalid
      • setAttributeIfExist

        public XMLTag setAttributeIfExist​(java.lang.String name,
                                          java.lang.String value,
                                          java.lang.String relativeXpath,
                                          java.lang.Object... arguments)
                                   throws XMLDocumentException
        Description copied from interface: XMLTag
        Sets the new value on a targetted node's attribute, and remains on the current tag. If the attribute does not exist, do nothing.
        Specified by:
        setAttributeIfExist in interface XMLTag
        Parameters:
        name - attribute name
        value - new attribute's value
        relativeXpath - XPath expression
        arguments - facultative Xpath expression arguments. Uses String.format() to build XPath expression.
        Returns:
        attribute value
        Throws:
        XMLDocumentException - XPath expression is invalid or targetted node does not exist
      • newDocument

        public static XMLDocBuilder newDocument​(boolean ignoreNamespaces)
      • from

        public static XMLTag from​(org.w3c.dom.Node node,
                                  boolean ignoreNamespaces)
      • from

        public static XMLTag from​(org.xml.sax.InputSource source,
                                  boolean ignoreNamespaces)
      • from

        public static XMLTag from​(java.io.Reader reader,
                                  boolean ignoreNamespaces)
      • from

        public static XMLTag from​(java.io.InputStream is,
                                  boolean ignoreNamespaces)
      • from

        public static XMLTag from​(java.io.File file,
                                  boolean ignoreNamespaces)
      • from

        public static XMLTag from​(java.net.URL xmlLocation,
                                  boolean ignoreNamespaces)
      • from

        public static XMLTag from​(java.lang.String xmlData,
                                  boolean ignoreNamespaces)
      • from

        public static XMLTag from​(javax.xml.transform.Source source,
                                  boolean ignoreNamespaces)
      • from

        public static XMLTag from​(XMLTag tag,
                                  boolean ignoreNamespaces)
      • fromCurrentTag

        public static XMLTag fromCurrentTag​(XMLTag tag,
                                            boolean ignoreNamespaces)
        Create another XMLTag instance from the hierarchy under the current tag. The current tag becomes the root tag.
        Parameters:
        tag - The current XML Tag positionned to the new root tag
        ignoreNamespaces - Wheter to build a namespace aware document
        Returns:
        The inner XMLTag instance