XPath?

Hallo alle Tutorials users,

ich habe bitte ein frage zum Thema XPath mit Java benutzen:

ich habe mein String so definiert um den ganz xml "rss" nach "wir" zu suchen.
ich kriege aber nur einem einzigen Output, und das war die erste knote wo er "wir" findet. dann hört mein Programme nach weiteren "wir" zu suchen.

String expression = ("rss/channel/item/*[ contains(translate(text(), \"WIR\", \"wir\"),\"wir\") ]");

ich denke irgendwas habe ich in meinem String Definition falsch geschrieben.

oder?

Danke
 
mein code ist:

Code:
import java.io.IOException; import javax.xml.parsers.*; 
import javax.xml.soap.Node;
import javax.xml.xpath.*;
import org.w3c.dom.Document;
import org.xml.sax.SAXException;
/** * @author Darimont * * TODO Comment me */

import javax.xml.xpath.XPath; 
import javax.xml.xpath.XPathExpressionException; 
import javax.xml.xpath.XPathFactory; 
import org.xml.sax.InputSource; 
public class XPathExample {
	/** * Creates a new instance of xpath */ 
	public static void main(String[] args) {
		String expression = ("rss/channel/item/*[ contains(translate(text(), \"WIR\", \"wir\"),\"wir\") ]");
		InputSource iSource = null; 
	try {
		iSource = new InputSource("test.xml");
	} catch(Exception e) {
		e.printStackTrace(System.out); }
	XPath xpath = XPathFactory.newInstance().newXPath(); 
	try {	
		String output = xpath.evaluate(expression, iSource);
		System.out.println("output: " + output);  
		} catch(XPathExpressionException e) {
			e.printStackTrace(System.out); 
			} catch(Exception e) {
				System.out.println(e.toString()); } } }

die Output ist nur:

Code:
output: Wir sind krank durch Konsolen: Nintendo gegen Wii

danke
 
Hi.
ich habe mein String so definiert um den ganz xml "rss" nach "wir" zu suchen.
ich kriege aber nur einem einzigen Output, und das war die erste knote wo er "wir" findet. dann hört mein Programme nach weiteren "wir" zu suchen.

String expression = ("rss/channel/item/*[ contains(translate(text(), \"WIR\", \"wir\"),\"wir\") ]");

ich denke irgendwas habe ich in meinem String Definition falsch geschrieben.
Nein. Aber wenn du den XPath einmal anwendest, und einen String zurückbekommst - wie soll das funktionieren, dass du mehrere Resultate erhälst?

Versuch's mal so:
Java:
import org.w3c.dom.NodeList;

NodeList nl = (NodeList) xpath.evaluate(expression, iSource, XPathConstants.NODESET);
for (int i = 0; i < nl.getLength(); ++i) {
    System.out.println(nl.item(i).getFirstChild().getNodeValue());
}
Gruß
 
soweit sieht wunderbar aus ;-).
ich habe noch ein frage um mehr wissen zu haben ;-)
Also mein String habe ich so definiert :
Code:
String expression = ("rss/channel/item/*[ contains(translate(text(), \"WIR\", \"wir\"),\"wir\") ]");
aber sagen wir so, wenn ich will rausbekommen wo gibt's überall in meinem ganzen xml datei "wir" , die nicht unbedingt von "item" stammen. Wäre das schon möglich?

ich habe einfach so probiert, aber das war nix :rolleyes:
Code:
String expression = ("/*[ contains(translate(text(), \"WIR\", \"wir\"),\"wir\") ]");

danke
 
Hi.
soweit sieht wunderbar aus ;-).
ich habe noch ein frage um mehr wissen zu haben ;-)
Dann solltest du mal ein XPath Tutorial durcharbeiten (z.B. http://www.w3schools.com/xpath/)
aber sagen wir so, wenn ich will rausbekommen wo gibt's überall in meinem ganzen xml datei "wir" , die nicht unbedingt von "item" stammen. Wäre das schon möglich?

ich habe einfach so probiert, aber das war nix :rolleyes:
Code:
String expression = ("/*[ contains(translate(text(), \"WIR\", \"wir\"),\"wir\") ]");
Versuch's mal damit:
Code:
String expression = ("//*[ contains(translate(text(), \"WIR\", \"wir\"),\"wir\") ]");
Gruß
 
HALLO :rolleyes: ICH WARTE NOCH AUF EIN ANTWORT.

DANKE ;-];-];-]
Sag mal, alles klar bei dir? Das hier ist kein Chat oder Instant Messaging! Wenn ich nicht schon geantwortet hätte, würde ich es mir jetzt schwer überlegen.

Du könntest dir auch mal selbst etwas überlegen bzw. erstmal Google o.ä. verwenden um die Antwort selbst zu finden. Wenn du schon auf andere angewiesen bist, weil du es allein nicht auf die Reihe kriegst, dann gewöhne dir entsprechende Umgangsformen an und halte dich an die Netiquette!

Gruß
 
Zurück