# XML einlesen und Attribute auslesen



## Winfo606 (21. Jul 2016)

Hallo liebe Gemeinde,

ich habe via REST-Call in Java eine XML ausgelesen, was ich folgendermaßen realisiert haben:


```
HttpGet getUrl = new HttpGet("http://localhost.....);                       
                                                               
getUrl.addHeader("Accept", "application/xml");
getUrl.addHeader("OSLC-Core-Version", "2.0");
                   
HttpResponse URLresponse = HttpUtils.sendGetForSecureDocument(server, ......);
HttpUtils.printResponseBody(URLresponse);
                                        
HttpEntity PAentity = catalogResponse.getEntity();
if (PAentity != null) {
     PAentity.consumeContent();
}
ResponseHandler<String> PAresponseHandler = new BasicResponseHandler();
String PAresponseBody = httpclient.execute(getUrl, PAresponseHandler);
```

Das funktioniert auch wunderbar, also darauf muss nicht weiter eingegangen werden. Ich erhalte also einen Response mit folgender Struktur, wenn ich diese ausgebe:


```
<?xml version="1.0" encoding="UTF-8"?><xxx:project-area xmlns:xxx="http://url.net/xmlns/prod/jazz/process/0.6/" xxx:name="Diesen Namen möchte ich auslesen">
<xxx:summary>Zusammenfassung.....</xxx:summary>
<xxx:description>Beschreibung, lalalalala</xxx:description>
<xxx:url>
https://localhost:9443/.....
</xxx:url>
<xxx:roles-url>
https://localhost:9443/....
</xxx:roles-url>
<xxx:links-url>
https://localhost:9443/.....
</xxx:links-url>
</xxx:project-area>
```

Hier brauche ich unbedingt das Attribut  "jp06:name="*Diesen Namen möchte ich auslesen*", was ich leider nicht hinbekomme. 
Bei den Attributen "xxx:summary", "xxx:description" oder "xxx:url" habe ich keine Problem, da mache ich es wie folgt:


```
DocumentBuilderFactory PAfactory = DocumentBuilderFactory.newInstance();
DocumentBuilder PAbuilder;

PAbuilder = PAfactory.newDocumentBuilder(); 
Document PAdoc = PAbuilder.parse( new InputSource( new StringReader(PAresponseBody)));

NodeList PAurls = PAdoc.getElementsByTagName("jp06:url");

 for(int y=0,size2= PAurls.getLength(); y<size2; y++) {
    System.out.println(PAurls.item(y).getFirstChild().getTextContent());                                  
    Element PAurl = (Element)PAurls.item(y);
    projectAreaUlList.add(PAurls.item(y).getFirstChild().getTextContent());  
}
```

Am Ende verwende ich eine Schleife, da ich von diesen Abschnitten mehrere besitze:


```
<xxx: project-area ... xxx:name= "name1"
.....
</xxx: project-area>
<xxx: project-area ... xxx:name= "name2"
.....
</xxx: project-area>
<xxx: project-area ... xxx:name= "name3"
.....
</xxx: project-area>
```

Also mehrere hintereinander in der XML, sprich ich benötige auch jeden Namen aller Blöcke.

Kann mir da jemand helfen, wie ich dieses Attribut auslesen kann? "xxx:name=" Das ist in diesem Fall nicht mit "getFirstChild" möglich :-(


Mit besten Grüßen


----------



## Winfo606 (22. Jul 2016)

Hi Leute,

ich konnte es jetzt nach einiger Zeit selber lösen =) Das möchte ich euch nicht vorenthalten:


```
NodeList PAnames = PAdoc.getElementsByTagName("xxx:project-area");
Node PA;

for(int x=0,size= PAnames.getLength(); x<size; x++) {
PA = PAnames.item(x);
Element e = (Element)PA;
System.out.println(e.getAttribute("xxx:name"));
}
```


----------

