Class ElementSupport
java.lang.Object
net.shibboleth.utilities.java.support.xml.ElementSupport
public final class ElementSupport extends Object
Set of helper methods for working with DOM Elements.
-
Constructor Summary
Constructors Modifier Constructor Description private
ElementSupport()
Constructor. -
Method Summary
Modifier and Type Method Description static void
adoptElement(Document adopter, Element adoptee)
Adopts an element into a document if the child is not already in the document.static void
appendChildElement(Element parentElement, Element childElement)
Appends the child Element to the parent Element, adopting the child Element into the parent's Document if needed.static void
appendTextContent(Element element, String textContent)
Creates a text node with the given content and appends it as child to the given element.static Element
constructElement(Document document, String namespaceURI, String localName, String prefix)
Constructs an element, rooted in the given document, with the given information.static Element
constructElement(Document document, QName elementName)
Constructs an element, rooted in the given document, with the given name.static List<Element>
getChildElements(Node root)
Gets the child elements of the given element.static List<Element>
getChildElements(Node root, QName name)
Gets the child nodes with the given local tag name.static List<Element>
getChildElementsByTagName(Node root, String localName)
Gets the child nodes with the given local tag name.static List<Element>
getChildElementsByTagNameNS(Node root, String namespaceURI, String localName)
Gets the child nodes with the given namespace qualified tag name.static Element
getElementAncestor(Node currentNode)
Gets the ancestor element node to the given node.static List<String>
getElementContentAsList(Element element)
Gets the value of a list-type element as a list.static QName
getElementContentAsQName(Element element)
Constructs a QName from an element's adjacent Text child nodes.static String
getElementContentAsString(Element element)
Gets the text content for this Element only.static Element
getFirstChildElement(Node n)
Gets the first child Element of the node, skipping any Text nodes such as whitespace.static Element
getFirstChildElement(Node root, QName name)
Returns the first child element of the supplied element with the supplied name if it exists.static Map<QName,List<Element>>
getIndexedChildElements(Element root)
Gets the child elements of the given element in a single iteration.static Element
getNextSiblingElement(Node n)
Gets the next sibling Element of the node, skipping any Text nodes such as whitespace.static boolean
isElementNamed(Element e, String ns, String localName)
Shortcut for checking a DOM element node's namespace and local name.static boolean
isElementNamed(Element e, QName name)
Check if the given Element has the given name.static void
setDocumentElement(Document document, Element element)
Sets a given Element as the root element of a given document.
-
Constructor Details
-
ElementSupport
private ElementSupport()Constructor.
-
-
Method Details
-
adoptElement
Adopts an element into a document if the child is not already in the document.- Parameters:
adoptee
- the element to be adoptedadopter
- the document into which the element is adopted
-
appendChildElement
public static void appendChildElement(@Nonnull Element parentElement, @Nullable Element childElement)Appends the child Element to the parent Element, adopting the child Element into the parent's Document if needed.- Parameters:
parentElement
- the parent ElementchildElement
- the child Element
-
appendTextContent
Creates a text node with the given content and appends it as child to the given element.- Parameters:
element
- the element to receive the text nodetextContent
- the content for the text node
-
constructElement
Constructs an element, rooted in the given document, with the given name.- Parameters:
document
- the document containing the elementelementName
- the name of the element, must contain a local name, may contain a namespace URI and prefix- Returns:
- the element
-
constructElement
public static Element constructElement(@Nonnull Document document, @Nullable String namespaceURI, @Nonnull String localName, @Nullable String prefix)Constructs an element, rooted in the given document, with the given information.- Parameters:
document
- the document containing the elementnamespaceURI
- the URI of the namespace the element is inlocalName
- the element's local nameprefix
- the prefix of the namespace the element is in- Returns:
- the element
-
getChildElements
Gets the child elements of the given element.- Parameters:
root
- element to get the child elements of- Returns:
- list of child elements or an empty list if the root is null.
-
getChildElements
Gets the child nodes with the given local tag name. If you need to retrieve multiple, named, children consider usinggetChildElements(Node)
.- Parameters:
root
- element to retrieve the children fromname
- name of the child elements to be retrieved- Returns:
- list of child elements, never null
-
getFirstChildElement
Returns the first child element of the supplied element with the supplied name if it exists. Otherwise null. SeegetChildElements(Node, QName)
.- Parameters:
root
- element to parse child elementsname
- name of the child elements to parse- Returns:
- first child element or null
-
getChildElementsByTagName
@Nonnull public static List<Element> getChildElementsByTagName(@Nullable Node root, @Nullable String localName)Gets the child nodes with the given local tag name. If you need to retrieve multiple, named, children consider usinggetChildElements(Node)
.- Parameters:
root
- element to retrieve the children fromlocalName
- local, tag, name of the child element- Returns:
- list of child elements, never null
-
getChildElementsByTagNameNS
@Nonnull public static List<Element> getChildElementsByTagNameNS(@Nullable Node root, @Nullable String namespaceURI, @Nullable String localName)Gets the child nodes with the given namespace qualified tag name. If you need to retrieve multiple, named, children consider usinggetChildElements(Node)
.- Parameters:
root
- element to retrieve the children fromnamespaceURI
- namespace URI of the child elementlocalName
- local, tag, name of the child element- Returns:
- list of child elements, never null
-
getElementAncestor
Gets the ancestor element node to the given node.- Parameters:
currentNode
- the node to retrieve the ancestor for- Returns:
- the ancestral element node of the current node, or null
-
getElementContentAsString
Gets the text content for this Element only. WhereasNode.getTextContent()
will return all text for this element and all children, this just grabs the text for this element (which may be spread over multiple lines).- Parameters:
element
- The element to look at.- Returns:
- The text content, or "" if there is none, never null.
-
getElementContentAsList
Gets the value of a list-type element as a list.- Parameters:
element
- element whose value will be turned into a list- Returns:
- list of values, never null
-
getElementContentAsQName
Constructs a QName from an element's adjacent Text child nodes.- Parameters:
element
- the element with a QName value- Returns:
- a QName from an element's value, or null if the given element is empty
-
getFirstChildElement
Gets the first child Element of the node, skipping any Text nodes such as whitespace.- Parameters:
n
- The parent in which to search for children- Returns:
- The first child Element of n, or null if none
-
getIndexedChildElements
Gets the child elements of the given element in a single iteration.- Parameters:
root
- element to get the child elements of- Returns:
- child elements indexed by namespace qualified tag name, never null
-
getNextSiblingElement
Gets the next sibling Element of the node, skipping any Text nodes such as whitespace.- Parameters:
n
- The sibling to start with- Returns:
- The next sibling Element of n, or null if none
-
isElementNamed
Check if the given Element has the given name.- Parameters:
e
- element to checkname
- name to check for- Returns:
- true if the element has the given name, false otherwise
-
isElementNamed
public static boolean isElementNamed(@Nullable Element e, @Nullable String ns, @Nullable String localName)Shortcut for checking a DOM element node's namespace and local name.- Parameters:
e
- An element to compare againstns
- An XML namespace to comparelocalName
- A local name to compare- Returns:
- true iff the element's local name and namespace match the parameters
-
setDocumentElement
Sets a given Element as the root element of a given document. If the given element is not owned by the given document than it is adopted first.- Parameters:
document
- document whose root element will be setelement
- element that will be the new root element
-