einzelne tags mit jdom auslesen

Status
Nicht offen für weitere Antworten.
G

gast_connie

Gast
hallo,

ich möchte, für ein kleines testprogramm, die testdaten aus einer xml-datei auslesen. für die klasse PlusButton und die Methode operate also die 2 testfälle plus1 und plus2 mit den jeweilen testdaten <param>

Code:
<tests>
  <class name="PlusButton">
    <method name="operate">
      <test-case name="plus1">
        <params>
          <param name="var">10</param> 
          <param name="var">20</param> 
	  <param name="result">30</param> 
        </params>
      </test-case>
	<test-case name="plus2">
        <params>
          <param name="var">15</param> 
          <param name="var">9</param> 
          <param name="var">1</param> 
	  <param name="result">25</param> 
        </params>
      </test-case>
    </method>
  </class>
...

ich habe mit java und jdom nur wenig erfahrung. ich möchte die tags "var" und "result" jeweils in ein array schreiben, die ich dann übergeben kann. so in etwa habe ich mir das vorgestellt:

Code:
        File datei = new File("C:/testen/workspace/TRechnerTest/testdata/test_data.xml");
		
	SAXBuilder builder = new SAXBuilder();
	Document document = builder.build(datei);
        
        Element root = document.getRootElement();
	           
        List test=root.getChild("class").getChild("method").getContent();
        
        Iterator t=test.iterator();
        String var[]=null;
        String res[]=null;
	    
	    while(t.hasNext())
	    {
	    	Element e = (Element) t.next();
	    	List tliste=root.getChild("class").getChild("method").getChild("test-case")
	    						.getChild("params").getChildren();
	    	
	    	Iterator tl=tliste.iterator();
	    	for(int j=0; j<tliste.size(); j++)
	    	{
                        //Initialisierung der beiden Arrays var und res fehlt noch

                        Element el=(Element) tl.next();
	    		if(el.getChild("param").getAttribute("name").getValue()=="var")
		    		//var[j]=el.getChild("param").getText();
	    			System.out.println("var "+el.getChild("param").getValue());
	    		else if(el.getChild("param").getAttribute("name").getValue()=="result")
		    		//res[j]=el.getChild("param").getText();
	    			System.out.println("result"+el.getChild("param").getValue());
	    		
	    	}    	
	    	
	    }

so funktioniert es nicht, ich bekomme den fehler java.lang.ClassCastException. hat jemand eine einfache lösung parat?
vielen dank.
 

clemson

Bekanntes Mitglied
Hallo!

Ich würde dafür XPath verwenden. Am besten googelst mal danach...

Code:
package org.javaforum.y06.dec.tests;

import java.io.File;
import java.io.IOException;
import java.util.List;

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

public class TestXPath
{

	/**
	 * @param args
	 * @throws IOException
	 * @throws Exception
	 */
	@SuppressWarnings("unchecked")
	public static void main(String[] args) throws Exception
	{
		File testsFile = new File("tests.xml");
		SAXBuilder builder = new SAXBuilder();
		Document document = builder.build(testsFile);

		Element rootElement = document.getRootElement();
		String xpathQuery = "//tests/class[@name='PlusButton']/method/*";
		List<Element> list = XPath.selectNodes(rootElement, xpathQuery);

		for (Element testCaseElement : list)
		{
			// get the params element
			Element paramsElement = testCaseElement.getChild("params");

			// get all var params
			List<Element> varParamList = XPath.selectNodes(paramsElement, "//param[@name='var']");
			for (Element varParamElement : varParamList)
			{
				log("var-param:" + varParamElement.getText());
			}

			// get the result param
			Element resultParamElement = (Element) XPath.selectSingleNode(paramsElement, "//param[@name='result']");
			log("result: " + resultParamElement.getTextTrim());
			
			log("###############");
		}

	}

	private static void log(String text)
	{
		System.out.println(text);
	}

}
 

byte

Top Contributor
Die java.lang.ClassCastException wird geworfen, weil getContent() nicht ausschließlich Objekte vom Typ Element liefert. Du musst also in der Schleife vor dem casten erstmal prüfen, ob das Objekte auch vom Typ Element ist.

Ansonsten ist der Tipp mit XPath ziemlich gut. Alternative: Über root.getDescendants() iterieren.
 
G

gast_connie

Gast
danke für die schnelle antwort. hab es wie oben mit xpath probiert. es funktioniert auch, allerdings werden die params folgendermaßen ausgegeben:

var-param:10
var-param:20
var-param:15
var-param:9
var-param:1
result: 30
###############
var-param:10
var-param:20
var-param:15
var-param:9
var-param:1
result: 30
###############

was muss ich in der for-schleife noch ändern, damit die params in der form

var
var
result
#######
var
var
var
result
#######

ausgeben werden?
 

clemson

Bekanntes Mitglied
also dass nur die werte ausgegeben werden?

die werte werden in dem beispiel über die log methode ausgegeben. eine ausgabe sieht dan beispielsweise so aus:
Code:
log("var-param:" + varParamElement.getText());
willst du jetzt nur den text des xml tags ausgeben, so musst du
Code:
log(varParamElement.getText());
aufrufen...

alles klar? bzw. war das deine frage?
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
E Einzelne Tags der context.xml lesen XML & JSON 1
X Einzelne Tags rausnehmen aus einem großen XML-file XML & JSON 4
H XML-Datei in einzelne XML-Dateien zerlegen XML & JSON 2
H Checkstyle Bedeutung von Tags XML & JSON 2
T Tags in XML Datei mit Java erstellen XML & JSON 3
E Leere Tags in XML-Output in langer Form XML & JSON 3
4 ID3 Tags, Datenhaltung alternativen XML & JSON 2
N Jsoup: PHP-Tags bereiten Probleme? XML & JSON 2
T Möchte JSP Code in Attribut eines HTML Tags hinein generieren XML & JSON 3
ruutaiokwu regex auf xml-tags... XML & JSON 3
_dp Java XML Parse error: findet end-tags nicht XML & JSON 10
C Kompletten Inhalt eines Tags ausgeben XML & JSON 2
G Tags oder Zeilen der Not-Validen XML-Datei XML & JSON 7
M Ersetzen zwischen tags XML & JSON 2
P "Formatierungs-Tags" parsen XML & JSON 3
M TextContent eines XML-Elements enthält HTML-Tags . was nun XML & JSON 2
Saxony Zeilenumbruch bei XML-Tags XML & JSON 4
D Mit Sax Inhalt zwischen Tags in Vector speichern XML & JSON 4
A XML Tags als PHP String XML & JSON 4
T Newbie Frage. CSS Stylesheet einlesen und suchen nach Tags XML & JSON 6
M Speichern von "Tags" in XML XML & JSON 2
A [JAXB] unmarshaller mit unbekannten tags XML & JSON 4
M Inhalt zwischen Tags mit Sax XML & JSON 3
P JDOM oder SAX XML & JSON 3
Hijo2006 Grundsätzliches zu JDOM 2.x XML & JSON 1
W Kindelemente mit JDOM eines bestimmten Attributes auslesen XML & JSON 6
S JDOM XML Datei darstellen Fehler! XML & JSON 2
S JDom XML ein Element hinzufügen. XML & JSON 1
C JDOM: Value ohne Unterelemente auslesen XML & JSON 1
Z XML Datei mit JDOM einlesen und verarbeiten XML & JSON 6
J JDOM XMLOutputter getPrettyFormat() XML & JSON 3
H JDOM setAttribute Reihenfolge XML & JSON 3
B XML aus einer URL im Internet lesen (JDOM) XML & JSON 4
F Aus XML mit JDOM aus Elementattributen Werte rauslesen XML & JSON 4
R sax, stax, jdom, jaxb? List von Objekten speichern und laden XML & JSON 6
C xml validierung gegen xsd mit jdom: Fehlermeldung Cannot find the declaration of element ... XML & JSON 8
T Dom, Jdom, Sax XML & JSON 8
Helgon MalformedByteSequenceException und null JDOM Attribute XML & JSON 5
Helgon JDOM schreibt nicht XML & JSON 2
A XSl mit JDom auslesen XML & JSON 1
G xml, jdom "Entität wurde referenziert aber nicht deklariert." XML & JSON 4
A XSL und JDom XML & JSON 3
G jdom-Klassen in Eclipse importieren XML & JSON 2
S JDOM ohne XML Header erzeugen? XML & JSON 2
G JDOM - aus Children-Liste ein Child direkt ansprechen ohne XPath? XML & JSON 9
S JDOM nur Attribut Name XML & JSON 2
X JDom für SOAP Dateien geeignet? XML & JSON 3
T Xpath & JDOM Element Pfad ausgeben XML & JSON 2
M XML Parsen JDOM NullPointerEcxeption XML & JSON 7
S jdom hasChildren()? XML & JSON 1
T Frage zu getContent unter jdom XML & JSON 6
Z Tutorial für JDOM (XSD-Shema) XML & JSON 3
D jdom, xml, login-system XML & JSON 4
N JDOM: XML einlesen XML & JSON 4
O Parsen einer XML mit JDOM ohne Doctype Declaration XML & JSON 2
lordcarlos jdom zu iso-8859-15 zwingen XML & JSON 4
P jdom XML-Encoding auslesen XML & JSON 12
E JDOM - letzem child Attribut hinzufügen XML & JSON 4
H Schema-Validierung mit JDOM XML & JSON 2
lordcarlos JDOM und entfernen von children XML & JSON 4
E JDOM - Problem beim Zusammenfügen zweier Dateien XML & JSON 2
T jdom.jar als Relativer Pfad in Eclipse einbinden XML & JSON 4
sparrow JDom Element.getChild("Name") liefert null obwohl vorhanden XML & JSON 4
S XML, UTF-8, JDOM und Umlaute XML & JSON 3
E XML - JDOM - Bäume: was würdet ihr hier machen? XML & JSON 11
A JDOM: Wert schreiben bzw. ändern XML & JSON 6
T JDOM Bibiliothek XML & JSON 3
K JDOM vs. DOM, Schnittstellen XML & JSON 5
P Große XML Datei mittels JDOM bearbeiten / einlesen XML & JSON 6
0x7F800000 jdom mit xml.transform inkompatibel, was soll ich nehmen? XML & JSON 2
T EXSD auslesen mit XPath und JDOM XML & JSON 8
A JDOM und Sonderzeichen < > XML & JSON 17
G Simples XML File einlesen mit JDom. Prefix not bound ? XML & JSON 2
N jdom problem beim lesen von child elementen XML & JSON 5
N problem bei xml lesen mit jdom XML & JSON 2
S Ampersand im Jdom-Element XML & JSON 2
N jdom - xslt-Verweis in .xml einfügen XML & JSON 3
S Jdom+java webstart XML & JSON 4
K html -> cyberneko -> xml -> jdom . XML & JSON 3
I JDom Text ändern XML & JSON 4
C jdom.Element nicht vorhanden? XML & JSON 4
W JDOM element ändern funzt nich :( [problem gelöst] XML & JSON 3
C XPath in JDOM klappt nicht XML & JSON 2
S Harte Nuss mit XML und JDOM XML & JSON 2
H mit JDOM Verarbeitungsanweisungen und Kommentare auslesen XML & JSON 2
B jdom: getChildren() problem XML & JSON 4
T Bild in XML per JDOM XML & JSON 4
D JDOM erzeugt leere xmlns Attribute XML & JSON 4
T Elemente zählen mit JDOM in XML XML & JSON 7
B jdom document aus string erzeugen? XML & JSON 1
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
T XML mit JDOM auslesen => langsam? XML & JSON 7
B jdom outputter ohne attribute XML & JSON 2
C XML encoding UTF-8 und JDOM XML & JSON 4
P Probleme mit JDom . addContent(int index,Collection c) XML & JSON 2
R key aus xml lesen mittels jdom XML & JSON 5
M JDOM Element ohne Inhalt kopieren ? XML & JSON 3
X JDOM SAXBuilder Validationschema - Problem XML & JSON 8
F XML ( ca. 280 MB) JDom & SAXBuilder lesen = OutOfMemoryE XML & JSON 4

Ähnliche Java Themen

Neue Themen


Oben