Xpath - How to get all the attribute names and values of an element

attributes, element, java, xpath

Solution

To select all attributes of all elements in the document named Element1: `//Element1/@*`. This will return a nodeset containing attribute nodes. You can then iterate the nodeset.

If you already have a context node and wish to find results under it, the query would be `.//Element1/@*`. This is usually more efficient than querying the entire document.

// input is an InputSource or a DOM node
NodeList nl = (NodeList) xpath.evaluate("//Element1/@*", input, XPathConstants.NODESET);
int length = nl.getLength();
for( int i=0; i<length; i++) {
    Attr attr = (Attr) nl.item(i);
    String name = attr.getName();
    String value = attr.getValue();
}

And it may be more efficient to find all elements of a given name using getElementsByTagName.

NodeList nl = document.getElementsByTagName("Element1"); 

To get the attributes of a particular element, iterate its attributes property.

NamedNodeMap nl = element.getAttributes();
int length = nl.getLength();
for( int i=0; i<length; i++) {
    Attr attr = (Attr) nl.item(i);
    String name = attr.getName();
    String value = attr.getValue();
}

Problem

I am using xpath in java. I want to get all the attributes (name & Value) of an element. I found the query to get the attribute values of an element, now I want to get attribute names alone or names and values in single query. ``` <Element1 ID="a123" attr1="value1" attr2="value2" attr3="value3" attr4="value4" attr5="value5" /> ``` Here using the following query to get all the attribute values of `Element1` `XmlUtils.getAttributes(Path, String.format("//*/@*"));` Using this format `//*/@*` I can get the values. result would be `value1 value2 value3 value4 value5 a123` Now I want to know the query to get all the attribute names, or query to get all the attributes name and value.

Original source