Xpath - 如何获取元素的所有属性名称和值

SWD*_*per 12 java xpath attributes elements

我在java中使用xpath.我想获得一个元素的所有属性(名称和值).我发现查询获取元素的属性值,现在我想在单个查询中单独获取属性名称或名称和值.

<Element1 ID="a123" attr1="value1" attr2="value2" attr3="value3" attr4="value4" attr5="value5" />
Run Code Online (Sandbox Code Playgroud)

这里使用以下查询来获取Element1 XmlUtils.getAttributes(Path, String.format("//*/@*")); 使用此格式的所有属性值,//*/@*我可以获取值.结果会是value1 value2 value3 value4 value5 a123

现在我想知道查询以获取所有属性名称,或查询以获取所有属性名称和值.

Lac*_*che 29

要选择名为Element1的文档中所有元素的所有属性://Element1/@*.这将返回一个节点集包含属性节点.然后,您可以迭代节点集.

如果您已经有一个上下文节点并希望在其下找到结果,那么查询就是.//Element1/@*.这通常比查询整个文档更有效.

// 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();
}
Run Code Online (Sandbox Code Playgroud)

使用getElementsByTagName查找给定名称的所有元素可能更有效.

NodeList nl = document.getElementsByTagName("Element1"); 
Run Code Online (Sandbox Code Playgroud)

要获取特定元素的属性,请迭代其属性属性.

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();
}
Run Code Online (Sandbox Code Playgroud)