2010-11-25 8 views
2

J'ai le code Java suivant qui fonctionne avec XPath pour obtenir des données à partir d'éléments XML. La première fois que l'expression est évaluée dans title, cela fonctionne comme il se doit. Mais la prochaine fois, dans cost, chaque fois que j'affiche la valeur cost, il est juste "Impossible d'obtenir le coût". Ai-je manqué quelque chose en essayant de faire plusieurs expressions XPath?XPath ne fonctionne pas correctement

XPathFactory factory = XPathFactory.newInstance(); 
XPath xpath = factory.newXPath(); 
XPathExpression exp; 
InputSource inputSource = new InputSource(new StringReader(woot_xml)); 
title = "Could not get title"; 
cost = "Could not get cost"; 
try { 
    exp = xpath.compile("/rss/channel/item/title"); 
    title = exp.evaluate(inputSource); 
    exp = xpath.compile("/rss/channel/item/pubDate"); 
    cost = exp.evaluate(inputSource); 
} catch (XPathExpressionException e) { 
    // Do nothing for now 
} 

C'est le XML que je vais au large de: http://www.woot.com/salerss.aspx

+0

Eh bien, à quoi ressemble le XML? –

+0

essayé?: // rss/channel/item/title et // rss/channel/item/pubDate (double // au démarrage) – Steven

+0

J'ai mis à jour ma question avec le XML. Et j'ai essayé le // mais ça ne marche pas. – Chiggins

Répondre

3

Qu'est-ce que l'exception dit que vous avalez? Je pense que ce message d'exception vous éclairera.

+0

"org.xml.sax.SAXParseException: fin de document inattendue" est le message d'exception que j'ai obtenu avec 'e.printMessage()' – Chiggins

+0

Exactement. C'est parce que 'InputSource' peut seulement être lu une fois ... et il est consommé maintenant. – Lucero

+0

Oh, je ne le savais pas. Quel serait un bon moyen de faire plusieurs lectures XPath de tat alors? – Chiggins