# Ersatz für die veraltete Klasse XPath



## Sherry (11. Mai 2014)

Hallo zusammen,

ich möchte gerne eine XML-Datei mit XPath und JDOM nach Element-Werten ausgeben lassen. Dazu folgende Klasse.

```
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


----------



## nvidia (11. Mai 2014)

XPath-Verarbeitungsmöglichkeiten gibt es in JDOM immer noch, man arbeitet jetzt nur anders damit. Siehe https://github.com/hunterhacker/jdom/wiki/JDOM2-A-Primer#xpath


----------

