getTextContent()不是公认的功能。 getNodeValue()适用于字符串,但无论何时我尝试使用getNodeValue()解析数字,它都会返回null!
如何使用此类从XML解析Long?
答案 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
,然后应手动转换为数字类型。
此外 - 您确定要解析一个正确的节点(保存所需长值的节点)吗?