Дом парсинг в Android - PullRequest
       37

Дом парсинг в Android

1 голос
/ 24 января 2011

Если я проанализирую тег, содержащий тег <p>Some Text</p>, я получу исключение нулевого указателя.

Мой RSS-канал выглядит следующим образом:

<quaddeals_conditions><p>Limit one QuadDeal</p></quaddeals_conditions>

Мой код:

if (name.equalsIgnoreCase("quaddeals_conditions")) {
    property.normalize();
    conditions = property.getFirstChild().getNodeValue();   
}

Ответы [ 2 ]

2 голосов
/ 24 января 2011

У вас есть элемент

внутри элемента.

Поэтому извлеките все четырехугольники, затем итерируйте каждый из них и извлеките из него элемент p:

DocumentBuilder builder = factory.newDocumentBuilder();
Document dom = builder.parse(this.inputStream);
Element root = dom.getDocumentElement();

// snip

NodeList items = root.getElementsByTagName("quaddeals_conditions");
for (int i = 0; i < items.getLength(); i++) {
            Node item = items.item(i);
            NodeList properties = item.getChildNodes();
            for (int j = 0; j < properties.getLength(); j++) {
                Node property = properties.item(j);
                String name = property.getNodeName();
                if (name.equalsIgnoreCase("p")) {
                    property.getFirstChild().getNodeValue(); // Your paragraph data
                }
            }
}

Надеюсь, это поможет.

0 голосов
/ 24 января 2011

"имя" не NULL?Я не вижу, чтобы вы проверяли это.Хорошей практикой программирования является сравнение другого способа, если это возможно:

if ("quaddeals_conditions".equalsIgnoreCase(name)) ...

Так что даже если «имя» равно NULL, вы не получите исключение NullPointerException.Всегда проверяйте ненулевое значение перед доступом к какому-либо элементу объекта.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...