2016-02-05 3 views
0

Я хочу, чтобы получить список имен ключей, хранящихся в keystore.xml:JDOM: не может найти символ GetAttribute()

<?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 (я) .getAttribute ("имя");». Я не понимаю, почему он не работает. Есть ли у вас какие-либо идеи? Это мой код:

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; 
} 
+1

ваше название, описание и код показывают три разных ошибки – wero

+0

Я вижу одну ошибку. Netbeans выделяет getAttribute («имя») ... – Jans

ответ

3

В принципе, вам нужно использовать дженерики. В настоящее время вы используете необработанные типы - так что keyList.get(i) является выражением типа Object. Также было бы более чистым использовать расширенный цикл (или потоки Java 8) - в настоящее время ваш цикл for имеет неуместную верхнюю границу.

Я подозреваю, что вы хотите (до Java 8): (. Вы должны объявить метод, чтобы возвратить List<String> тоже)

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

Если вы не знакомы с обобщениями уже, я сильно рекомендую вам сразу же прочитать их. Это очень важная часть современного Java-программирования.

Смежные вопросы