# XML Liste erstellen



## delphiking1980 (7. Jul 2011)

Hallo,

ich möchte eine XML Datei haben welche mir eine Liste darstellt, Werte sollen nur Strings sein.

Wie mache ich das ??

Habe schon erfahrung mit JAXB aber listen habe ich mir bis jetzt nicht erstellt.

Danke für jede Hilfe.

Dachte da an so etwas aber finde keine Referenz welche mir die Bestätigung gibt.

[XML]
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<fileList>
	<list>
	<value></value>
	</list>
</fileList>
[/XML]


----------



## eRaaaa (7. Jul 2011)

Also so ganz hab ichs jetzt noch nicht:
Was genau willst du machen? Du hast eine Liste (List<String> ..) und willst daraus eine XML Datei erstellen die so aussieht wie von dir gezeigt, oder wie?
Wobei gibts jetzt konkret Probleme?


----------



## delphiking1980 (7. Jul 2011)

ich möchte aus der XML Datei eine Liste  (ArrayList<String>)erstellen


----------



## eRaaaa (7. Jul 2011)

Achso, also genau umgekehrt?! 

Gibt ja eine Million Möglichkeiten, mit externen Bibliotheken gehts evtl. sogar mit einem Einzeiler, ohne könnte das z.B. so gehen:


```
import java.util.ArrayList;
import java.util.List;

import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.xpath.XPathConstants;
import javax.xml.xpath.XPathExpression;
import javax.xml.xpath.XPathFactory;
import org.w3c.dom.Document;
import org.w3c.dom.NodeList;
//.....
		DocumentBuilder builder = DocumentBuilderFactory.newInstance().newDocumentBuilder();
		Document document = builder.parse(HIER DEIN XML FILE);
		XPathExpression expr = XPathFactory.newInstance().newXPath().compile("//value");
		NodeList nodes = (NodeList) expr.evaluate(document, XPathConstants.NODESET);
		List<String> liste = new ArrayList<String>();
		for (int i = 0; i < nodes.getLength(); i++) {
				liste.add(nodes.item(i).getTextContent().trim());
		}
```

???:L
Vlt auch mal ein wenig lesen? :rtfm: :toll:


----------



## delphiking1980 (7. Jul 2011)

wo kann ich da nachlesen ???


----------



## eRaaaa (7. Jul 2011)

In Büchern oder per Google Suchen und im Internet schauen ?! Was ist das für eine Frage....:noe:
Es gibt mehrere XML-Bibliotheken, zu jeder gibts zig Tutorials! Vlt. solltest du dir a) klar machen welche Bib du nutzen willst, b) was du genau willst und c) eben dann lesen und ausprobieren.

Einiges steht auch hier: Galileo Computing :: Java ist auch eine Insel – 18 Die eXtensible Markup Language (XML)


----------



## delphiking1980 (7. Jul 2011)

habe ich mit JAXB sehr gute erfolge zu verzeichnen, nur mir fehlt halt das Liste objekt mehr nicht, da mein Internet hier echt schlecht ist (abbrüche alle 5 minuten) ist es etwas mühselig im Internet zu suchen.


----------



## eRaaaa (7. Jul 2011)

Naja und du willst jetzt von uns Code oder wie?
Also wenn man mit JAXB eine Liste namens "list" aus einer Klasse FileList schreiben würde, würde da wohl eher
[xml]
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<fileList>
    <list>value</list>
    <list>value</list>
</fileList>
[/xml]
bei raus kommen, also ohne deinen extra Tag!
Die o.g. XML Datei könntest du bspw. so mit JAXB einlesen:

```
@XmlRootElement(name = "fileList")
public class FileList {

	List<String> list;

	public List<String> getList() {
		return list;
	}

	public void setList(List<String> liste) {
		this.list = liste;
	}

	public static void main(String[] args) throws Exception {
		JAXBContext jc = JAXBContext.newInstance(FileList.class);
		Unmarshaller u = jc.createUnmarshaller();
		FileList filelist = (FileList) u.unmarshal(new File("......"));
	}
}
```


----------



## delphiking1980 (7. Jul 2011)

Code hätte ich nicht gebraucht nur eine Valide XML Datei denn der JAXB generiert mir ja aus der XSD Datei dann mir die Java Objekte.

Trotzdem danke für deine Geduld.


----------



## eRaaaa (7. Jul 2011)

Das hätte man im ersten Beitrag doch schon alles direkt klar und deutlich schreiben können oder?
Wenn`s nun erledigt ist, bitte auch als solches hier markieren, danke !


----------

