2013-03-25 6 views
1

У меня есть следующий кодНевозможно получить значение XML тег

protected static final String TAG_numFound     = "numFound";  // 
Document street_xmlDoc = GetXMLDocument(street_url); 
Element results = street_xmlDoc.getDocumentElement(); 
//numFound 
Node numFoundNode = results.getElementsByTagName(TAG_numFound).item(0); 
String numFound = numFoundNode.getNodeValue() + "(" + numFoundNode.getNodeName() + ")"; 

и на следующий XML

<results> 
<numFound>1</numFound> 
<QTime>66</QTime> 
<result> 
<distance>0.0</distance> 
<name>Agua</name> 
</result> 
</results> 

И в переменной numFound Струнный я получаю «нулевой (numFound)» Я не понимаю, почему я не получаю «1 (numFound)». Что я делаю неправильно?

ответ

1

Вам необходимо использовать getTextContent вместо getNodeValue.

Прочтите это blog post для получения дополнительной информации.

Вы можете видеть, когда getNodeValue имеет какое-либо значение в этом разделе javadoc (или в нижеследующем снимке). node value in XML parsing

+0

Спасибо, что решить его проблему, теперь Я читаю ссылку, которую вы опубликовали. –

2

Вы можете использовать XPath, чтобы получить значение, это могло бы быть более понятным для будущих читателей вашего кода:

final Document document = //build your document 
    final XPath xPath = XPathFactory.newInstance().newXPath(); 
    final XPathExpression expression = xPath.compile("//numFound/text()"); 
    final Number output = (Number) expression.evaluate(document, XPathConstants.NUMBER); 
    System.out.println(output); 

Выходные:

1.0 
+0

Спасибо, я никогда не слышал о XPath, это кажется простым, чем использование NodeList и Element. –

Смежные вопросы