проблема парсера - PullRequest
       12

проблема парсера

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

У меня есть этот RSS-канал для анализа, который содержит несколько тегов.Я могу получить значение (дочерний элемент) для всех, кроме узла тега описания.пожалуйста, найдите ниже rss feed

<fflag>0</fflag>
<tflag>0</tflag>
<ens1:org>C Opera Production</ens1:org>
−
<description>
<p>Opera to be announced</p>

<p>$15 adults/$12 seniors/$10 for college students<span style="white-space: pre;"> </span></p>
</description>

код, который я использую для этого,

    StringBuffer descriptionAccumulator = new StringBuffer();

else if (property.getNodeName().equals("description")){
                    try{
                        String desc = (property.getFirstChild().getNodeValue());
                        if(property.getNodeName().equals("p")){
                            descriptionAccumulator.append(property.getFirstChild().getNodeValue());
                        }
                    }
                    catch(Exception e){
                        Log.i(tag, "No desc");
                    }
else if (property.getNodeName().equals("ens1:org")){
                try{

                        event.setOrganization(property.getFirstChild().getNodeValue());
                        Log.i(tag,"org"+(property.getFirstChild().getNodeValue()));
                    }
                    catch(Exception e){

                    }
else if (property.getNodeName().equals("area")||property.getNodeName().equals("fflag") || property.getNodeName().equals("tflag") || property.getNodeName().equals("guid")){
                    try{
                        //event.setOrganization(property.getFirstChild().getNodeValue());
                        Log.i(tag,"org"+(property.getFirstChild().getNodeValue()));
                    }
                    catch(Exception e){

                    }
else if(property.getNodeName().equals("p") || property.getNodeName().equals("em") || property.getNodeName().equals("br") || property.getNodeName().startsWith("em") || property.getNodeName().startsWith("span") || property.getNodeName().startsWith("a") || property.getNodeName().startsWith("div")  || property.getNodeName().equals("div")  || property.getNodeName().startsWith("p")){
                    descriptionAccumulator.append(property.getFirstChild().getNodeValue());
                    descriptionAccumulator.append(".");
                    System.out.println("description added:"+descriptionAccumulator);
                    Log.i("Description",descriptionAccumulator+property.getFirstChild().getNodeValue());


                }

Я попытался захватить значение тега <description>, но это не помоглоЯ попытался использовать все обычные теги форматирования HTML, которые используются, но до сих пор нет выхода.использование любого другого парсера не вариант.может какое-нибудь тело, пожалуйста, помогите мне с этим.спасибо

Ответы [ 2 ]

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

Я считаю, что что-то не так с RSS-XML. Например, проверьте, что xml возвращает StackOverflow rss feed . Обратите особое внимание на то, как выглядит содержимое узла <summary type="html"> - внутри него нет дочерних узлов xml, только чистый текст с экранированием xml. Так что, если это приемлемо в вашем случае - потратьте усилия на правильное создание rss xml, а не на исправление последствий.

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

Вы анализируете это как xml, поэтому тег описания не имеет строкового значения, он имеет несколько дочерних элементов. Вы можете попытаться получить узел описания и просто напечатать его дети. См. LSSerializer для печати в XML.

...