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

标签 java xpath attributes elements

我在 java 中使用 xpath。我想获取元素的所有属性(名称和值)。我找到了获取元素属性值的查询,现在我想单独获取属性名称或在单个查询中获取名称和值。

<Element1 ID="a123" attr1="value1" attr2="value2" attr3="value3" attr4="value4" attr5="value5" />

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

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

最佳答案

要选择名为 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();
}

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

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

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

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();
}

关于java - Xpath - 如何获取元素的所有属性名称和值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2460592/

相关文章:

java - 替换 c :foreach on ui:repeat

r - R中xpathSApply的正确语法

xml - xslt如何选择当前节点或先前的同级,但不能同时选择两者

.net - 自定义 .NET 属性的实际使用

javascript - 如何从列表中获取每个元素的数据属性

java - Tomcat 是否能够在一个应用程序(BASIC 和 CLIENT-CERT)上使用混合身份验证?

java - 如何将空字符串序列化为单个空标记?

c# - Json.Net 从属性自定义序列化

java - 防止java中的浮点错误

php - 在有效的 PHP query() XPath 中转换 Javascript XPath |标准化 JS XPath --> PHP