android dom解析器问题

时间:2011-01-10 18:35:31

标签: android rss domparser

我有这个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>标记的值,但该dint工作了,所以我尝试使用所有常用的html格式标记,但仍然没有出路。使用任何其他解析器不是一个选项。有些人可以帮我解决这个问题。感谢

2 个答案:

答案 0 :(得分:1)

我相信rss xml的smth是错误的。例如,检查StackOverflow rss feed返回的xml。特别注意<summary type="html">节点内容的样子 - 它内部没有子xml节点,只有纯xml转义文本。因此,如果在您的情况下它是可接受的 - 花费在正确的rss xml生成上而不是修复后果。

答案 1 :(得分:0)

您正在将其解析为xml,因此description标签没有字符串值,它有多个子节点。您可能会尝试获取描述节点并将其打印出来。有关打印到XML的信息,请参阅LSSerializer