# JDOM nur Attribut Name



## Steffilein (11. Mai 2011)

Hi,

ich möchte aus einer XML-Datei nur die Attributsnamen ohne den eigentlichen Wert auslesen.

Mein Java-Code sieht bis jetzt wie folgt aus:


```
List<?> element = XPath.selectNodes( doc, "/root/element" );
for (int j = 0; j < element.size(); j++) {
      Element e = (Element) e.get(j);
      System.out.print(p.getAttributeValue("att1")+" | "+p.getAttributeValue("att2")+" | "+p.getAttributeValue("att3")
```

ich habe also händisch, alle Attributnamen eingetragen. 
Eine Liste mit allen Attributen inkl. der zugehörigen Werte erzeuge ich mir mit 
	
	
	
	





```
List<?> attribute = p.getAttributes();
```
. Wie verändere ich meinen Code, um nur den Namen (also att1, att2, att3 usw.) zu bekommen?!?

Hoffe ich habe mein Problem verständlich rüber gebracht...

LG, Steffi


----------



## eRaaaa (11. Mai 2011)

Wo kommt jetzt das 
	
	
	
	





```
p
```
 her? Du meinst dort sicherlich 
	
	
	
	





```
e
```
 oder?
Also ich würde direkt mit XPath alle Attribute selektieren, nicht das Element!

"/root/element/@*"

oder wirklich alle Attribute im Dokument ""//@*"
Dann liefert dir selectNodes eine Liste von Attribute-Objekten wo du dann wiederum getName() aufrufen kannst!


```
List<Attribute> attributes = XPath.selectNodes(doc, "/root/element/@*");
		for (Attribute attr : attributes) {
			System.out.println(attr.getName());
		}
```


----------



## Steffilein (11. Mai 2011)

Danke für die schnelle Antwort 
Ja, ich meinte e  passiert, wenn man mal schnell was tippt ;-)

Mit deiner Hilfe konnte ich mein Problem jetzt wie folgt lösen. 

```
Element e = (Element) listname.get(j);
List<?> attr = e.getAttributes();
			if (attr.isEmpty()==false) {
				for (int i=0; i <attr.size(); i++){
					Attribute a = (Attribute) attr.get(i);
					System.out.print(e.getAttributeValue(a.getName())+" | ");
				}
			}
```

Funktioniert alles ohne Problem... :toll:


----------

