XPath + Inhalt aus <td>

wdmprojekt

Mitglied
Hi,

ich lese gerade mittels XPath ein <td> Element mit Attribut id=1234 ein (<td id="1234">value</td>)
und möchte mir den Text innerhalb des Elements ausgeben lassen (value).

Java:
public String getText() throws Exception {
		String text = (String) this.xpath.evaluate(
				"//td[@id=\"1234\"]/text()", this.doc,
				XPathConstants.STRING);

		return text;
	}

Was ist an der Expression falsch?
 
Was ist an der Expression falsch?

Am liebste würde ich jetzt nur mit: "Nichts" antworten, aber das wird hier wohl niemanden weiterbringen 😀

a) wäre es vom Vorteil gewesen wenn du zumindest erzählt hättest mit welcher API/Library du dein XML parst. Ich gehe jetzt mal von javax.xml.(XPath) aus ?
b) wäre es gut zu wissen wie du darauf kommst, dass die "Expression" falsch ist. Was passiert denn? Kommt eine Exception(wenn ja welche), erhältst du kein oder ein unerwartetes Ergebnis(wenn ja, welches) usw.
c) Evtl. ein kleines Beispiel, welches man nachvollziehen kann wäre auch gut, denn so weiß niemand was da jetzt dein xpath und dein doc ist.

Ein ausführbares Beispiel und was jeder nachvollziehen kann wäre z.B.:
Java:
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.xpath.XPath;
import javax.xml.xpath.XPathConstants;
import javax.xml.xpath.XPathFactory;
import org.w3c.dom.Document;

/**
 * Snippet
 * 
 */
public class App {
	/**
	 * Hello Snippet
	 * 
	 */
	public static void main(String[] args) throws Exception {
		DocumentBuilderFactory domFactory = DocumentBuilderFactory.newInstance();
	    DocumentBuilder builder = domFactory.newDocumentBuilder();
	    Document doc = builder.parse("test.xml"); //
	    XPathFactory factory = XPathFactory.newInstance();
	    XPath xpath = factory.newXPath();
	    String result = ((String) xpath.evaluate("//td[@id=\"1234\"]/text()", doc, XPathConstants.STRING)).trim();
	    System.out.println(result);
	}
}

[xml]
<root>
<td id="1234">
value
</td>
</root>
[/xml]

liefert bei mir zumindest -> value!
 
Ich habe den Fehler ausmachen können:

"value" innerhalb des <td>-Tags ist zunächst leer,
wird mittels AJAX wohl aber nachgeladen.

Wie kann ich das ohne JavaServer Pages (Servlets) umsetzen oder geht das gar nicht?

Danke für das wirklich gute Beispiel, so hatte ich es auch implementiert.
 

Zurück
Oben