Xpath kindelemente auslesen

Status
Nicht offen für weitere Antworten.
H

hans66

Gast
Hallo, bin ziemlich neu mit java und Xpath.

Mein Problem:
Ich ahb ein xml - File das sieht folgendermassen aus:

<FAMILY javabean='yes' >
<INDIVIDUAL upn='2' gender='0' generation='0' tree='7' >
<PROGENYINTERNALINDIVIDUAL x='59.0' y='87.0' >
</PROGENYINTERNALINDIVIDUAL>
<SIBLING siblingid='3' >
</SIBLING>
<SYMBOL >
</SYMBOL>
<DATA>
<FIELD fieldid='3' value='10.02.1971' >
</FIELD>
<FIELD fieldid='2' value='Andrea' >
</FIELD>
<FIELD fieldid='1' value='Jafjafw' >
</FIELD>
</DATA>
</INDIVIDUAL>
<INDIVIDUAL upn='3' gender='1' hlight='1' generation='0' tree='7' >
<PROGENYINTERNALINDIVIDUAL x='204.0' y='85.0' >
</PROGENYINTERNALINDIVIDUAL>
<SYMBOL >
</SYMBOL>
<DATA>
<FIELD fieldid='3' value='' >
</FIELD>
<FIELD fieldid='2' value='' >
</FIELD>
<FIELD fieldid='1' value='' >
</FIELD>
</DATA>
</INDIVIDUAL>
</FAMILY>


Nun möchte ich folgende Daten aus dem XML - File heraus filtern und in einer Hashmap speichern.
die upn: Sie soll mein key für die Hashmap sein.
Dann sollen die Daten die zu dem upn gehören als objekt in die Hashmap mit rein.

Wenn das getan ist soll das nächste Individual genommen werden und das ganze wieder genauso.
Mein Problem is dass ich die Zuordnung zwischen der upn und den zugehörigen Daten (<data> ) nicht hinbekomme.

Kann mir da jemand helfen???? Bitte...
 

clemson

Bekanntes Mitglied
wenn du mit jdom arbeitest, könntest du es folgendermaßen machen...

stellt sich die frage ob du es mit jdom lösen willst bzw. wie deine struktur in der map aussehen soll (was soll als value gespeichert werden?)

XmlTest.java
Code:
import java.io.IOException;
import java.io.InputStream;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;

import org.jdom.Document;
import org.jdom.Element;
import org.jdom.JDOMException;
import org.jdom.input.SAXBuilder;
import org.jdom.xpath.XPath;

/**
 * @version $Revision: $, $Date: $
 */
public class XmlTest
{

	/**
	 * @param args
	 * @throws IOException
	 * @throws JDOMException
	 */
	public static void main(String[] args) throws JDOMException, IOException
	{
		new XmlTest();
	}

	public XmlTest() throws JDOMException, IOException
	{
		// build parser and set up inputstream
		SAXBuilder builder = new SAXBuilder();
		InputStream in = this.getClass().getResourceAsStream("file.xml");

		// build document and get root element
		Document xmlDoc = builder.build(in);
		Element familyElement = xmlDoc.getRootElement();

		// get all 'individual' elements
		List<Element> individualElements = XPath.selectNodes(familyElement, "/FAMILY/INDIVIDUAL");
		System.out.println("individualElements.size() = " + individualElements.size());

		Map<Long, Element> dataMap = new HashMap<Long, Element>();

		// iterate over all 'individual elements'
		Iterator<Element> iterator = individualElements.iterator();
		Element individual, data;
		long upn;
		while (iterator.hasNext())
		{
			individual = iterator.next();

			// get the upn attribute value and the data child
			upn = Long.parseLong(individual.getAttributeValue("upn"));
			data = individual.getChild("DATA");

			// add key-value pair to map
			dataMap.put(upn, data);
		}

		printMap(dataMap);

	}

	private void printMap(Map<Long, Element> map)
	{
		StringBuilder mapString = new StringBuilder("map: [");

		Iterator<Long> keyIterator = map.keySet().iterator();
		long upn;
		Element data;
		while (keyIterator.hasNext())
		{
			upn = keyIterator.next();
			data = map.get(upn);

			mapString.append("[upn: ").append(upn).append("[");
			mapString.append(data).append("]]");
		}

		System.out.println(mapString.toString());
	}

}

file.xml
Code:
<FAMILY javabean='yes'>
	<INDIVIDUAL upn='2' gender='0' generation='0' tree='7'>
		<PROGENYINTERNALINDIVIDUAL x='59.0' y='87.0'></PROGENYINTERNALINDIVIDUAL>
		<SIBLING siblingid='3'></SIBLING>
		<SYMBOL></SYMBOL>
		<DATA>
			<FIELD fieldid='3' value='10.02.1971'></FIELD>
			<FIELD fieldid='2' value='Andrea'></FIELD>
			<FIELD fieldid='1' value='Jafjafw'></FIELD>
		</DATA>
	</INDIVIDUAL>
	<INDIVIDUAL upn='3' gender='1' hlight='1' generation='0' tree='7'>
		<PROGENYINTERNALINDIVIDUAL x='204.0' y='85.0'></PROGENYINTERNALINDIVIDUAL>
		<SYMBOL></SYMBOL>
		<DATA>
			<FIELD fieldid='3' value=''></FIELD>
			<FIELD fieldid='2' value=''></FIELD>
			<FIELD fieldid='1' value=''></FIELD>
		</DATA>
	</INDIVIDUAL>
</FAMILY>
 

clemson

Bekanntes Mitglied
bzw. an das data element eines individiual-elements - bei gegebener upn id - kommst du folgendermaßen mittels xpath heran:

Code:
/FAMILY/INDIVIDUAL[@upn='2']/DATA


fürs einarbeiten in xpath kann ich dir das tutorial bei www.zvon.org empfehlen.
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
Kirby.exe Probleme mit XML XPATH Select XML & JSON 3
B XPath soll XML liefern XML & JSON 7
O XPATH Problem - Anfänger XML & JSON 4
M dom4j unberechtigte Invalid XPath expression XML & JSON 12
W XPath schreiben XML & JSON 1
P HTML XPath XML & JSON 1
S Ersatz für die veraltete Klasse XPath XML & JSON 1
C XPath: Alle Kinder in einer Schleife auslesen XML & JSON 2
P Xpath zugriff auf Attribute XML & JSON 3
P "XPath is deprecated" XML eclipse XML & JSON 3
G HtmlUnit XPath XML & JSON 5
D XPath-Query XML & JSON 2
I XPath Namensräume und auslesen einzelner Knoten XML & JSON 3
AMStyles XPATH Befehl SVG Java XML & JSON 2
G xpath: in Kindelement zwei Attribut-Werte auslesen XML & JSON 2
G xpath: Inhalt eines Kindelements auslesen XML & JSON 2
H ChildNode via XPath ansprechen XML & JSON 2
G JDOM - aus Children-Liste ein Child direkt ansprechen ohne XPath? XML & JSON 9
S Attribute von Elementen auslesen mit XPath XML & JSON 2
T Xpath & JDOM Element Pfad ausgeben XML & JSON 2
W XPath + Inhalt aus <td> XML & JSON 2
R XPath - frage zur Adressierung XML & JSON 3
reibi XPath XML & JSON 14
M xPath liefert leeres Nodeset XML & JSON 2
M Probleme mit XPath bei Java XML & JSON 5
W Element mit XPath @id ermitteln wenn nur ein teil der id bekannt ist XML & JSON 2
F XPath-Problem mit DOM4J XML & JSON 8
T XPath Problem: finden einer Node nach Attributswert XML & JSON 2
O XPATH gesucht XML & JSON 6
G XPATH-Frage XML & JSON 2
L Element manipulieren in einem DOMResult per XPath XML & JSON 10
P XPath und Namespaces XML & JSON 3
G XPath - replace function funktioniert nicht XML & JSON 3
E XPATH-Ausdruck mit not XML & JSON 4
E Wieso liefert dieser XPATH-Ausdruck nicht die richtige Anzahl Treffer? XML & JSON 8
M XPath Ausdruck validieren XML & JSON 2
N XPath Adressierung XML & JSON 7
F XPath frage XML & JSON 4
B Optionaler XPath pfad XML & JSON 2
B XPath frage XML & JSON 2
T Frage zu XQuery (XQJ) / XPath XML & JSON 2
P XPath Problem XML & JSON 2
S Problem mit XPath XML & JSON 4
T Mit XPATH finden und dann änder XML & JSON 2
T EXSD auslesen mit XPath und JDOM XML & JSON 8
G XPath gesucht für Tag mit konkretem Content XML & JSON 2
A XPath Problem XML & JSON 2
C XPath in JDOM klappt nicht XML & JSON 2
T Prbolem XPath XML & JSON 2
X Xpath, alle Element die mit "user" beginnen auswäh XML & JSON 2
loadbrain XPath Problem XML & JSON 2
M brauche große XML-Datei für XPath-Tests XML & JSON 4
M JDOM und XPath, zu Element zugehörigen XPath-Ausdruck XML & JSON 5
F JDOM und XPath - Problem mit Namespace ohne Prefix XML & JSON 5
F hilfe bei xpath-ausdruck XML & JSON 2
K java + xpath -> performanceproblem XML & JSON 9
S Xml zurück in xpath wandeln XML & JSON 8
G Frage zu XPath XML & JSON 2
flashfactor Filtern mittels XPATH XML & JSON 4
M XSL/XPath - Nur ersten Wert mit selben Attribut XML & JSON 4
M XPath Problem im Zusammenhang mit document() XML & JSON 2
M Frag zu xsl:when beziehungsweise XPath XML & JSON 3
F JDom und XPath XML & JSON 12
C xpath funktioniert nicht XML & JSON 5
M XPATH und RSS (Problem namespaces) XML & JSON 7
P nochmal XPath :-) XML & JSON 22
P XPath . XML & JSON 2
T Rekursiver Verzeichniss Baum in XML & XPath XML & JSON 4
clemson xpath mit jdom XML & JSON 2
Wildcard xpath Parser XML & JSON 8
W Kindelemente mit JDOM eines bestimmten Attributes auslesen XML & JSON 6
F KindElemente lesen und begrenzen XML & JSON 0
D Stax mehrere "Kindelemente" zusammen XML & JSON 2
L JSON auslesen und Labels in GUI verwenden XML & JSON 13
M json page 2 auslesen XML & JSON 1
J Auslesen der Länge einer XML-Datei in Android Studio XML & JSON 8
Kanda Sorata Eingabefelder von Excel Dateien auslesen XML & JSON 1
K XML vernünftig auslesen XML & JSON 9
K XML Datei erstellen und Daten daraus in Java auslesen XML & JSON 6
H SOAPBody auslesen XML & JSON 0
B XML auslesen, benötige Hilfe XML & JSON 13
I Liste in YAML Datei speichern und wieder auslesen XML & JSON 1
W XML einlesen und Attribute auslesen XML & JSON 1
A Leeres Array beim Auslesen von XML-Datei XML & JSON 4
M Json auslesen XML & JSON 7
K XML Auslesen, wie abspeichern? XML & JSON 32
D Attribute aus XML Auslesen XML & JSON 5
R Apache POI: Gezieltes Auslesen von Zellen XML & JSON 2
S XMl auslesen:@ output ? XML & JSON 1
Z Verschachtelte XML auslesen XML & JSON 3
C JDOM: Value ohne Unterelemente auslesen XML & JSON 1
I XML IDs auslesen, erst X dann Y XML & JSON 2
S XML - rekursives auslesen - Zeilenumbruch als NodeValue? XML & JSON 3
O XML richtig auslesen XML & JSON 7
Kenan89 XML Tag-ID auslesen mit getElementById XML & JSON 2
J Excel zeilenweise auslesen - POI XML & JSON 5
J Excel Zellen auslesen - automatischer Stopp bei leerer Zelle XML & JSON 2
S SVG auslesen und darstellen XML & JSON 5
1 Html tabelle auslesen??? XML & JSON 6
JanUlrich Tabelle auslesen XML & JSON 2

Ähnliche Java Themen

Neue Themen


Oben