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)