Ersatz für die veraltete Klasse XPath

Sherry

Aktives Mitglied
Hallo zusammen,

ich möchte gerne eine XML-Datei mit XPath und JDOM nach Element-Werten ausgeben lassen. Dazu folgende Klasse.
Java:
package com.sherry.xml;

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

import javax.swing.plaf.basic.BasicBorders.ToggleButtonBorder;

import org.jdom2.Attribute;
import org.jdom2.Content;
import org.jdom2.Document;
import org.jdom2.Element;
import org.jdom2.JDOMException;
import org.jdom2.input.SAXBuilder;
import org.jdom2.xpath.XPath;

public class SearchElementsXML {

	@SuppressWarnings("deprecation")
	public static void main(String[] args) throws JDOMException, IOException {
		String target = "Hannover"; 
		SAXBuilder builder = new SAXBuilder();
		File xmlFile = new File("resources/city.xml");
		Document doc = (Document) builder.build(xmlFile);		

		List<Element> nodes = (List<Element>) XPath.selectNodes(doc, "/costcalculator/city");
		
		for (Element element : nodes) {
			if (target.equals(element.getAttributeValue("name"))) {
				System.out.println(element.getAttributeValue("name"));
				System.out.println(element.getChildText("ticket") + " EUR");
			}
			
		}
		
	}

}

Ich habe JDOM 2.0.5 im Classpath installiert und Eclipse zeigt mir die Klasse "XPath" als veraltet an. Welche Alternative habe ich, die Element-Inhalte und Attribute über Methoden zu erhalten ohne den Einsatz der Klasse XPath? Welche Klasse und welche Methoden müsste ich stattdessen unter XPath verwenden?

Die XML-Datei sieht so aus
[XML]<?xml version="1.0" encoding="UTF-8"?>
<costcalculator>
<city name="München">
<distance>221354</distance>
<duration>141</duration>
<ticket>547.00</ticket>
<hotel>56.65</hotel>
<flightcost>108.54</flightcost>
</city>
<city name="Frankfurt">
<distance>204269</distance>
<duration>7450</duration>
<ticket>0</ticket>
<hotel>0</hotel>
<flightcost>0</flightcost>
</city>
<city name="Hannover">
<distance>513256</distance>
<duration>17214</duration>
<ticket>250.00</ticket>
<hotel>0</hotel>
<flightcost>0</flightcost>
</city>
<city name="Mainz">
<distance>3800</distance>
<duration>17811</duration>
<ticket>47.89</ticket>
<hotel>48.00</hotel>
<flightcost>0.00</flightcost>
</city>
</costcalculator>
[/XML]

Vielen Dank!

Sherry
 
Zuletzt bearbeitet:

Zurück
Oben