java - JDOM : cannot find symbol getAttribute()

标签 java xml jdom-2 getattribute

我想获取存储在 keystore.xml 中的 key 名称列表:

<?xml version="1.0" encoding="ISO-8859-1"?>
<keystore>
<key name="key-01">
    <Verwendungszweck></Verwendungszweck>
    <Generation></Generation>
    <Version></Version>
    <Algorithmus></Algorithmus>
    <Keylength></Keylength>
    <Blocklength></Blocklength>
</key>

<key name="key-02">
    <Verwendungszweck></Verwendungszweck>
    <Generation></Generation>
    <Version></Version>
    <Algorithmus></Algorithmus>
    <Keylength></Keylength>
    <Blocklength></Blocklength>
</key>
</keystore>

不幸的是,Netbeans 说它“找不到符号 keyNameAttribute = keyList.get(i).getAttribute("name");”。我不明白为什么它不起作用。你有什么主意吗?这是我的代码:

    public List getKeyNames(){
    try {
        SAXBuilder builder = new SAXBuilder();
        Document document = builder.build(f);

        List keyNameList = new ArrayList();
        List keyList = new ArrayList();

        Element keystore = document.getRootElement();
        keyList = keystore.getChildren("key");
        for(int i=0; i<=keyList.size(); i++) {
            keyNameList.add((keyList.get(i)).getAttribute("name").getValue());
        }
        return keyNameList;
    } 
    catch (JDOMException e) {
        e.printStackTrace();
    }         
    catch(IOException e){
        e.printStackTrace();
        System.out.println(e.getMessage());
    } 
    return null;
}

最佳答案

基本上,您需要使用泛型。您当前正在使用原始类型 - 所以 keyList.get(i)Object 类型的表达式。使用增强的 for 循环(或 Java 8 流)也会更干净 - 目前您的 for无论如何,循环都有一个不合适的上限。

我怀疑你想要(Java 8 之前的版本):

List<String> keyNameList = new ArrayList();
Element keystore = document.getRootElement();
for (Element element : keystore.getChildren("key")) {
    keyNameList.add(element.getAttribute("name").getValue());
}

(您应该声明您的方法也返回 List<String>。)

如果您还不熟悉泛型,我强烈建议您立即阅读它们。它们是现代 Java 编程的非常重要的一部分。

关于java - JDOM : cannot find symbol getAttribute(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35219420/

相关文章:

java - JDOM setText() 不工作

java - 将数组添加到 SQL 数据库 (java)

java - 尽管 isDebugEnabled 为真,但 log4j 调试消息未显示在控制台中

java - 解析具有未知结构的 JSON 以便与已知结构进行比较的最佳方法?

python xml minidom 获取包含子节点和文本的子节点的全部内容

java - Eclipse - 在 Java 透视图中禁用 XML 文件的编译

Java 创建一个新的 xml 文件并附加它

java - 当有多个同名元素时,如何删除确切的元素?

java - 使用 Comparator 排序时,Content 已经有一个现有的父级

java - 对社交 api 身份验证的抄写员进行故障排除