org.w3c.dom.Node с версией Android менее 2.2 - PullRequest
3 голосов
/ 23 января 2011

getTextContent () не является распознанной функцией. getNodeValue () отлично работает со строками, но всякий раз, когда я пытаюсь разобрать число с помощью getNodeValue (), он возвращает ноль!

Как я могу разобрать Long из XML, используя этот класс?

Ответы [ 3 ]

6 голосов
/ 23 января 2011

Основная причина этого заключается в том, что метод getTextContent() является методом W3C DOM уровня 3;см. изменения спецификации ядра уровня 3 DOM.

Интерфейс узла имеет два новых атрибута, Node.baseURI и Node.textContent. ...

и getTextContent() является получателем для нового атрибута.

(Предположительно, в более старых версиях Android не реализованы API-интерфейсы уровня 3 DOM.)

Поведение getTextContent() немного сложнее в общем случае;см. спецификацию для атрибута textContext .В простом случае, когда целевым узлом является элемент с (только) текстовым содержимым, node.getTextContext() совпадает с node.getFirstChild().getNodeValue().

3 голосов
/ 23 января 2011

Вам нужно перейти вниз к текстовому узлу. Например, с чем-то вроде этого:

<val>10000</val>

проанализированное дерево XML имеет узел Элемент для тега, который, в свою очередь, имеет дочерний узел Текст для «10000». Типичная идиома

valNode.getFirstChild().getNodeValue()
0 голосов
/ 23 января 2011

Если, как вы говорите, getNodeValue () отлично работает со строками, то ничто не должно мешать делать:

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

Обратите внимание, getNodeValue() всегда будет возвращать String, который затем следует вручную преобразовать в числовой тип.

Кроме того - вы уверены, что анализируете правильный узел (тот, который содержит необходимое длинное значение)?

...