Android版本小于2.2的org.w3c.dom.Node

时间:2011-01-22 22:45:34

标签: java android xml w3c

getTextContent()不是公认的功能。 getNodeValue()适用于字符串,但无论何时我尝试使用getNodeValue()解析数字,它都会返回null!

如何使用此类从XML解析Long?

3 个答案:

答案 0 :(得分:6)

这是因为getTextContent()方法是W3C DOM Level 3方法;请参阅DOM级别3核心规范的changes部分。

  

Node接口有两个新属性,Node.baseURI和Node.textContent。 ...

getTextContent()是新属性的getter。

(据推测,旧版本的Android不会实现DOM 3级API。)

getTextContent()的行为在一般情况下有点复杂;请参阅textContext attribute的规范。在目标节点是具有(仅)文本内容的元素的简单情况下,node.getTextContext()node.getFirstChild().getNodeValue()相同。

答案 1 :(得分:3)

您需要向下导航到文本节点。例如,有这样的事情:

<val>10000</val>

解析后的XML树有一个标签的Element节点,而该节点又有一个“10000”的子Text节点。一个典型的习语是

valNode.getFirstChild().getNodeValue()

答案 2 :(得分:0)

如果你说“getNodeValue()对字符串工作正常”,那么没有什么可以防止这样做:

Long l = Long.getLong(node.getNodeValue());

注意,getNodeValue()将始终返回String,然后应手动转换为数字类型。

此外 - 您确定要解析一个正确的节点(保存所需长值的节点)吗?