Wie zu Lesen, die Eigenschaften von xml-Datei mit java?
Ich habe die folgende xml-Datei:
<resources>
<resource id="res001">
<property name="propA" value="A" />
<property name="propB" value="B" />
</resource>
<resource id="res002">
<property name="propC" value="C" />
<property name="propD" value="D" />
</resource>
<resource id="res003">
<property name="propE" value="E" />
<property name="propF" value="F" />
</resource>
</resources>
Wie kann ich so etwas mit Java/Xml:
Xml xml = new Xml("my.xml");
Resource res001 = xml.getResouceById("res003");
System.out.println("propF: " + res.getProperty("propF"));
Also er druckt:
F
Ich habe versucht, apache commons-Konfigurationen XMLConfiguration mit XPathExpressionEngine, aber ich kann einfach nicht damit es funktioniert. Ich habe gegoogelt und fand einige Beispiele, aber weder funktionieren würde 🙁
Ich bin auf der Suche nach einer Lösung, wo ich nicht brauchen, um eine Schleife durch alle Elemente.
Grüße,
Alex
Etwas off-topic, aber gibt es einen bestimmten Grund, den Sie speichern Ihre Eigenschaften als einzelne Elemente und nicht als Attribute?
Ich erkennen nicht, dass format. Was ist es?
Emil, Es fühlt sich am natürlichsten auf diese Weise. irgendwelche anderen Vorschläge?
<resource id="res003" propE="E" propF="F"/>
Ich erkennen nicht, dass format. Was ist es?
Emil, Es fühlt sich am natürlichsten auf diese Weise. irgendwelche anderen Vorschläge?
InformationsquelleAutor etxalpo | 2011-12-15
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ist dies trivial, vorausgesetzt, Sie sind bereit, zu re-schreiben Sie Ihre properties-Datei in die standard-Java-format. Angenommen, Sie haben Folgendes in eine Datei namens
props.xml
:Lesen Sie dann die Eigenschaften von der Datei wie folgt:
InformationsquelleAutor Wayne Burkett
Ich würde halt JAXB zum binden von Daten in einen Satz von Objekten, die Struktur, ähnlich wie Ihr XML-Dokument.
Etwas wie:
eine mögliche gotcha ist in Bezug auf eine Liste Serialisierung; es gibt zwei Modi, eingepackt und ausgepackt werden; in Ihrem Fall, Sie wollen "ausgepackt". Javadocs für Anmerkungen sollten zeigen annotation zu definieren.
Nein, absolut nicht-wenn XSD nötig war, habe ich lieber Wurzelkanal. Stattdessen definieren POJOs (mit setter und Getter; oder öffentlichen Bereichen), und dass die Verwendung. Keine Schemas beteiligt.
InformationsquelleAutor StaxMan
Gibt es viele Möglichkeiten. Man ist zu tun, JDOM und xpath. So etwas wie dieses (aus diesem Artikel: http://onjava.com/onjava/2005/01/12/xpath.html):
Nicht testen, aber sollte funktionieren. Für xpath-tutorial sehen http://zvon.org/xxl/XPathTutorial/General/examples.html . Es ist die beste und Schnellste Lehrgang.
Kümmern sich darum, dass der saxbuilder lifecycle, wenn es heißt oft.
InformationsquelleAutor Gábor Lipták
Dafür bin ich den XStream.
Es analysiert die XML in das Objekt mit gleichen strutuct.
Über XStream
Die Ihr Objekt:
während
Resources
haben die Attribute, mit setter und Getter,id
ist ein ObjektProperty
mit attibutesname
undvalue
.Hoffe, dass dies helfen
InformationsquelleAutor Anderson Carniel
Wenn ich du wäre, würde ich ein interface mit den gewünschten Methoden (
getProperty
,Resource
, etc) und geben Sie eine XPath-Implementierung.InformationsquelleAutor Dimitri
Danke für die vielen Antworten/Vorschläge! Ich habe versucht, einige xml-Bibliotheken, die oben gegeben und beschlossen zu gehen mit der Einfach XML-Bibliothek. Ich fand das "Wörterbuch" utility-Klasse besonders nützlich, um zu vermeiden, die Schleife durch alle Elemente. Elegant und einfach 🙂
Unten ist, wie ich es benutzt habe. Ich hoffe, es kann jemand anderes helfen...
Grüße,
Alex
Als ein Beispiel (unter Windows Vista):
Konsole-Fenster:
Resources.java
Resource.java
Property.java
resources.xml
InformationsquelleAutor etxalpo
Gibt es mehrere Parser können Sie verwenden. Für mich ist dieser Parser geklappt:
InformationsquelleAutor dudeldidadum