Bestimmte XML-Inhalte in String lesen

Prod3x

Neues Mitglied
Guten Morgen :)

ich habe ein Problem. Und zwar sollen aus dem XML Inhalt bestimmte Sachen herausgeholt werden und in Strings gespeichert.
Die XML Datei ist über 80.000 Zeilen lang ist also nur ein Ausschnitt. Benötigt werden aus dem Abschnitt <KeyFamilies> die Strings bei conceptRef:
"FREQUENZY", "TABLE", "COUNTRY", etc.

[XML] <KeyFamilies>
<structure:KeyFamily id="AIR_A1" agencyID="ESTAT" version="2.5" urn="urn:estat:sdmx.infomodel.keyfamily.KeyFamily=ESTAT:AIR_A1:2.2" isFinal="true">
<structure:Name xml:lang="en">Flight Stage Table Structure</structure:Name>
<structure:Components>
<structure:Dimension conceptRef="FREQUENCY" conceptSchemeRef="CS_AVIATION" conceptSchemeVersion="2.4" conceptSchemeAgency="ESTAT" codelist="CL_FREQ" codelistVersion="1.1" codelistAgency="ESTAT" isFrequencyDimension="true" />
<structure:Dimension conceptRef="TABLE" conceptSchemeRef="CS_AVIATION" conceptSchemeVersion="2.4" conceptSchemeAgency="ESTAT" codelist="CL_AIR_TABLE" codelistVersion="2.2" codelistAgency="ESTAT">
<structure:TextFormat textType="String" maxLength="2" />
</structure:Dimension>
<structure:Dimension conceptRef="COUNTRY" conceptSchemeRef="CS_AVIATION" conceptSchemeVersion="2.4" conceptSchemeAgency="ESTAT" codelist="CL_AIR_COUNTRY" codelistVersion="2.3" codelistAgency="ESTAT">
<structure:TextFormat textType="String" maxLength="2" />
</structure:Dimension>
<structure:Dimension conceptRef="AIRPORT" conceptSchemeRef="CS_AVIATION" conceptSchemeVersion="2.4" conceptSchemeAgency="ESTAT" codelist="CL_AIR_AIRPORT" codelistVersion="2.2" codelistAgency="ESTAT">
<structure:TextFormat textType="String" maxLength="4" />
</structure:Dimension>
<structure:Dimension conceptRef="PART_AIRPORT" conceptSchemeRef="CS_AVIATION" conceptSchemeVersion="2.4" conceptSchemeAgency="ESTAT" codelist="CL_AIR_AIRPORT" codelistVersion="2.2" codelistAgency="ESTAT">
<structure:TextFormat textType="String" maxLength="4" />
</structure:Dimension>
<structure:Dimension conceptRef="DIRECTION" conceptSchemeRef="CS_AVIATION" conceptSchemeVersion="2.4" conceptSchemeAgency="ESTAT" codelist="CL_AIR_DIRECTION" codelistVersion="2.2" codelistAgency="ESTAT">
<structure:TextFormat textType="Integer" maxLength="1" />
</structure:Dimension>
<structure:Dimension conceptRef="SCHEDULED" conceptSchemeRef="CS_AVIATION" conceptSchemeVersion="2.4" conceptSchemeAgency="ESTAT" codelist="CL_AIR_SCHEDULED" codelistVersion="2.2" codelistAgency="ESTAT">
<structure:TextFormat textType="Integer" maxLength="1" />
</structure:Dimension>
<structure:Dimension conceptRef="SERVICE" conceptSchemeRef="CS_AVIATION" conceptSchemeVersion="2.4" conceptSchemeAgency="ESTAT" codelist="CL_AIR_SERVICES" codelistVersion="2.2" codelistAgency="ESTAT">
<structure:TextFormat textType="Integer" maxLength="1" />
</structure:Dimension>
<structure:Dimension conceptRef="AIRLINE_INFO" conceptSchemeRef="CS_AVIATION" conceptSchemeVersion="2.4" conceptSchemeAgency="ESTAT" codelist="CL_AIR_AIRLINE" codelistVersion="2.3" codelistAgency="ESTAT">
<structure:TextFormat textType="String" maxLength="3" />
</structure:Dimension>
<structure:Dimension conceptRef="AIRCRAFT_TYPE" conceptSchemeRef="CS_AVIATION" conceptSchemeVersion="2.4" conceptSchemeAgency="ESTAT" codelist="CL_AIR_AIRCRAFT" codelistVersion="2.2" codelistAgency="ESTAT">
<structure:TextFormat textType="String" maxLength="4" />
</structure:Dimension>
<structure:TimeDimension conceptRef="TIME_PERIOD" conceptSchemeRef="CS_AVIATION" conceptSchemeVersion="2.4" conceptSchemeAgency="ESTAT">
<structure:TextFormat textType="ObservationalTimePeriod" />
</structure:TimeDimension>
<structure:primaryMeasure conceptRef="OBS_VALUE" conceptSchemeRef="CS_AVIATION" conceptSchemeVersion="2.4" conceptSchemeAgency="ESTAT">
<structure:TextFormat textType="Integer" />
</structure:primaryMeasure>
<structure:Attribute conceptRef="FREIGHT_MAIL" conceptSchemeRef="CS_AVIATION" conceptSchemeVersion="2.4" conceptSchemeAgency="ESTAT" attachmentLevel="Observation" assignmentStatus="Mandatory">
<structure:TextFormat textType="Integer" maxLength="12" />
</structure:Attribute>
<structure:Attribute conceptRef="COMMERCIAL" conceptSchemeRef="CS_AVIATION" conceptSchemeVersion="2.4" conceptSchemeAgency="ESTAT" attachmentLevel="Observation" assignmentStatus="Mandatory">
<structure:TextFormat textType="Integer" maxLength="12" />
</structure:Attribute>
<structure:Attribute conceptRef="SEATS_AVAIL" conceptSchemeRef="CS_AVIATION" conceptSchemeVersion="2.4" conceptSchemeAgency="ESTAT" attachmentLevel="Observation" assignmentStatus="Mandatory">
<structure:TextFormat textType="Integer" maxLength="12" />
</structure:Attribute>
</structure:Components>
</structure:KeyFamily>
</KeyFamilies>[/XML]

Mit meinem Programm Code habe ich es geschafft genau diesen oben geposteten Abschnitt in die Konsole auszugeben aber ich bin etwas Ratlos wie ich nun genau die gesuchten Wörter herausfiltern kann.

Java:
try {
			BufferedReader bf = new BufferedReader(new InputStreamReader(
					System.in));
			String xmlFile = "C://Lokaler Datenbereich/JavaProjek/Mapping/AIR_A1+ESTAT+2.5.xml";
			File file = new File(xmlFile);
			if (file.exists()) {
				DocumentBuilderFactory factory = DocumentBuilderFactory
						.newInstance();
				DocumentBuilder builder = factory.newDocumentBuilder();
				Document doc = builder.parse(xmlFile);
				TransformerFactory tranFactory = TransformerFactory
						.newInstance();
				Transformer aTransformer = tranFactory.newTransformer();
				// Get nodes list of all elements
				NodeList list = doc.getElementsByTagName("*");
				boolean helper = false;
				for (int i = 0; i < list.getLength(); i++) {
					// Get element
					Element element = (Element) list.item(i);
					Source src = new DOMSource(element);
					// System.out.println("Node no: " + i + " is "
					// + element.getNodeName());

					if (element.getNodeName() == "KeyFamilies") {

						System.out
								.println("Its corresponding xml representation:");
						Result dest = new StreamResult(System.out);
						aTransformer.transform(src, dest);
						System.out.println("\n");
					}

				}
			} else {
				System.out.println(xmlFile + " (file name) doesn't found!");
			}
		} catch (Exception e) {
			e.getMessage();
		}

Ich bin absoluter Neuling im Bereich XML in Java.

Viele Danke schonmal im Vorraus. :toll:
 
S

SlaterB

Gast
Strings mit equals vergleichen, nicht mit == !

bei so überschaubarer Struktur geht es vielleicht auch ohne getElementsByTagName(),
falls sie feststeht dann hangle dich von Document aus Ebene um Ebene durch,

wie auch immer scheint das StreamResult im if übertrieben, zumal du ja Strings brauchst?
schau dir auch bei den Blatt-Knoten die verfügbaren Methoden an, getText(), getAttributes() usw.,
 

Prod3x

Neues Mitglied
Ich hab es jetzt mit getAttribute() gelöst. Bin mir jetzt nur nicht so sicher ob das eine "elegante" Lösung ist ;)


Java:
try {
			BufferedReader bf = new BufferedReader(new InputStreamReader(
					System.in));
			String xmlFile = "AIR_A1+ESTAT+2.5.xml";
			File file = new File(xmlFile);
			if (file.exists()) {
				DocumentBuilderFactory factory = DocumentBuilderFactory
						.newInstance();
				DocumentBuilder builder = factory.newDocumentBuilder();
				Document doc = builder.parse(xmlFile);
				// Get nodes list of all elements
				NodeList list = doc.getElementsByTagName("*");
				for (int i = 0; i < list.getLength(); i++) {
					// Get element
					Element element = (Element) list.item(i);
					String attrValue = element.getAttribute("conceptRef");
					System.out.println(attrValue);

				}
			} else {
				System.out.println(xmlFile + " (file name) doesn't found!");
			}
		} catch (Exception e) {
			e.getMessage();
		}
 
Zuletzt bearbeitet:
Ähnliche Java Themen
  Titel Forum Antworten Datum
ruutaiokwu xml nur bis auf eine bestimmte ebene parsen mit javax.xml... XML & JSON 5
N Summe bilden wenn bestimmte Felder inhaltlich übereinstimmen XML & JSON 15
G xml einlesen und bestimmte Elemente an eine gui_Klasse überg XML & JSON 25
S Neue Inhalte in XML-Datei einfügen XML & JSON 0
W Whitespaces verschieben Inhalte XML & JSON 11
Sachinbhatt Python string find() examples XML & JSON 1
N JSON export String Unicode? XML & JSON 6
W Request als String XML & JSON 0
L Soapnachricht aus String erstellen XML & JSON 0
R String in XSLT teilen XML & JSON 3
M RSS als String speichern XML & JSON 12
W XMLStreamReader zu String machen? XML & JSON 2
B XML-Element als String ausgeben XML & JSON 5
H XML String auslesen XML & JSON 4
H XML String erstellen XML & JSON 4
T Wie einen String(XML Inhalt) in eine XML Datei speichern? XML & JSON 8
N XML-String in MIDP auslesen XML & JSON 3
W String nach XML nach String verwandeln XML & JSON 4
W XML DomDocument als String auslesen XML & JSON 2
B jdom document aus string erzeugen? XML & JSON 1
H Adapter: String->Element bzw. Element->String XML & JSON 6
A XML Tags als PHP String XML & JSON 4
S String in element casten XML & JSON 2
I XML-String mit SAX parsen ? XML & JSON 2
S JAVA XML Parser der einen String parst XML & JSON 3
G Elementbaum in String umwandeln XML & JSON 5
A StAX API: Cannot Cast from QName to String! XML & JSON 2
S org.jdom.document in String umwandeln. XML & JSON 2
S DefaultMutableTreeNodes als String in Textdatei speichern XML & JSON 7
W Xml-String parsen XML & JSON 2
B XML String einlesen XML & JSON 4
R XML Document als String XML & JSON 2
M Probleme mit String XML & JSON 3
G getAtributeValue liefert String mit störenden Steuerzeichen XML & JSON 2
D Text, String vor einem Root Element einfügen XML & JSON 2
R wie kann ich ein xml file in einen string einlesen? XML & JSON 2
E Element.setTextContent(String); Ersatz fuer Version 1.4? XML & JSON 3

Ähnliche Java Themen

Neue Themen


Oben