java 获取 XML 元素中所有属性的列表或名称

标签 java xml dom xpath

我有一个 xml 元素

   <base baseAtt1="aaa" baseAtt2="tt">
        <innerElement att1="one" att2="two" att3="bazinga"/>
   </base>

我想获取属性列表。 对于 基本元素和内部元素。

不知道内部元素的名称 它可以有许多不同的名称。

 NodeList baseElmntLst_gold  = goldAnalysis.getElementsByTagName("base");
 Element baseElmnt_gold = (Element) baseElmntLst_gold.item(0);

目标是得到一种字典作为输出,

例如,对于上面的 xml,输出将是一个包含这些值的字典。

baseAtt1 = "aaa"
baseAtt2 = "tt"
att1 = "one"
att2 = "two"
att3 = "bazinga"

我正在使用 jre 1.5

最佳答案

这是基于普通 DOM 的解决方案(但是在 Java 中将 XPath 与 DOM 结合起来并没有错):

NodeList baseElmntLst_gold  = goldAnalysis.getElementsByTagName("base");
Element baseElmnt_gold = (Element) baseElmntLst_gold.item(0);

NamedNodeMap baseElmnt_gold_attr = baseElmnt_gold.getAttributes();
for (int i = 0; i < baseElmnt_gold_attr.getLength(); ++i)
{
    Node attr = baseElmnt_gold_attr.item(i);
    System.out.println(attr.getNodeName() + " = \"" + attr.getNodeValue() + "\"");
}

NodeList innerElmntLst_gold = baseElmnt_gold.getChildNodes();
Element innerElement_gold = null;
for (int i = 0; i < innerElmntLst_gold.getLength(); ++i)
{
    if (innerElmntLst_gold.item(i) instanceof Element)
    {
        innerElement_gold = (Element) innerElmntLst_gold.item(i);
        break; // just get first child
    }
}

NamedNodeMap innerElmnt_gold_attr = innerElement_gold.getAttributes();
for (int i = 0; i < innerElmnt_gold_attr.getLength(); ++i)
{
    Node attr = innerElmnt_gold_attr.item(i);
    System.out.println(attr.getNodeName() + " = \"" + attr.getNodeValue() + "\"");
}

结果:

baseAtt1 = "aaa"
baseAtt2 = "tt"
att1 = "one"
att2 = "two"
att3 = "bazinga"

关于java 获取 XML 元素中所有属性的列表或名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6773359/

相关文章:

java - 有没有更好的方法使用 rxjava 处理多个请求?

java - 为什么Java8中没有Optional.mapToInt()?

c# - 使用 LINQ to XML 构建 SOAP 信封

xml - 如何在 perl 中编辑 XML 文件的内容?

javascript - 将 HTML 字符串附加到 DOM

java - 猜谜游戏,循环错误

java - 传输原始数据,例如 int、float-tuple : More efficient to parse strings or convert to byte array?

java - 未找到架构 : jms 的组件

javascript - Selenium:如何跟踪 DOM 操作以查找元素的可见性?

javascript - 在返回 false 的函数中使用 jQuery .preventDefault 和 .stopPropagation