Ошибка парсера Android dom - PullRequest
       13

Ошибка парсера Android dom

0 голосов
/ 01 сентября 2011

Я сталкиваюсь с определенной проблемой при синтаксическом анализе xml, поэтому анализатор работает нормально, пока не получит тег , который не содержит значения, я уже сделал тест и мой код:

static final String ImageHotel = "Url";

...

else if (name.equalsIgnoreCase("ImageHotel")){
                        message.setHotelImage(property.getFirstChild().getNodeValue());
                            if (!marchand.getImgHtlUrl().equalsIgnoreCase("")){
                                message.setHotelImageLink(new URL(marchand.getImgHtlUrl() + property.getFirstChild().getNodeValue()));
                            }else{
                                message.setHotelImageLink(new URL("http://localhost/noimage.jpg"));
                            }
                        }

Это продолжает выдавать ошибку, даже когда я пытался обойти, окружив try / catch ..

любая помощь приветствуется

спасибо. Houssem.

Ответы [ 2 ]

1 голос
/ 03 сентября 2011

У меня есть ссылка для разбора этого файла, попробуйте добавить свои собственные данные и получить значение тега ....

import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.URL;
import java.net.URLConnection;
import java.util.Vector;

import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;

import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;

public class NewsParsing {

    NewsBeen Objnewsbeen;
    Vector<NewsBeen> vectParse;

    public NewsParsing() {
        System.out.println("Constructor is calling Now ...");

        try {

            vectParse = new Vector<NewsBeen>();
            // http://www.npr.org/rss/rss.php?id=1001
            URL url = new URL(
                    "http://www.npr.org/rss/rss.php?id=1001");
            URLConnection con = url.openConnection();

            System.out.println("Connection is : " + con);

            BufferedReader reader = new BufferedReader(new InputStreamReader(
                    con.getInputStream()));
            System.out.println("Reader :" + reader);

            String inputLine;
            String fullStr = "";
            while ((inputLine = reader.readLine()) != null)
                fullStr = fullStr.concat(inputLine + "\n");

            InputStream istream = url.openStream();

            DocumentBuilder builder = DocumentBuilderFactory.newInstance()
                    .newDocumentBuilder();

            System.out.println("Builder : " + builder);

            Document doc = builder.parse(istream);

            System.out.println("Doc is : " + doc);

            doc.getDocumentElement().normalize();
            System.out.println("After Normlize : " + doc);

            System.out.println("Root is : "
                    + doc.getDocumentElement().getNodeName());

            System.out
                    .println("-------------------------------------------------------------------------------------------------------------");
            Element element = doc.getDocumentElement();

            parseFile(element);

            for (int index1 = 0; index1 < vectParse.size(); index1++) {
                NewsBeen ObjNB = (NewsBeen) vectParse.get(index1);

                System.out.println("Item No : " + index1);
                System.out.println();

                System.out.println("Title is : " + ObjNB.title);
                System.out.println("Description is : " + ObjNB.description);
                System.out.println("Pubdate is : " + ObjNB.pubdate);
                System.out.println("Link is : " + ObjNB.link);
                System.out.println("Guid is : " + ObjNB.guid);

                System.out.println();
                System.out
                        .println("-------------------------------------------------------------------------------------------------------------");

            }

        } catch (Exception e) {
            e.printStackTrace();
        }

    }

    private void parseFile(Node node) {

        NodeList nodelist = node.getChildNodes();

        for (int index = 0; index < nodelist.getLength(); index++) {
            Node nodefromList = nodelist.item(index);

            if (nodefromList.getNodeType() == Node.ELEMENT_NODE) {
                // System.out.println("node.getNodeType() : " +
                // nodefromList.getNodeType());
                // System.out.println("Node is : " + node.getNodeName());

                if (nodefromList.getNodeName().equalsIgnoreCase("item")) {

                    Objnewsbeen = new NewsBeen();
                    vectParse.addElement(Objnewsbeen);
                }

                if (nodefromList.hasChildNodes()) {
                    if (nodefromList.getChildNodes().item(0).getNodeName()
                            .equals("#text")) {

                        if (!nodefromList.getChildNodes().item(0)
                                .getNodeValue().trim().equals("")
                                && Objnewsbeen != null)

                            if (nodefromList.getNodeName().equalsIgnoreCase(
                                    "title")) {
                                Objnewsbeen.title = nodefromList
                                        .getChildNodes().item(0).getNodeValue();

                            } else if (nodefromList.getNodeName()
                                    .equalsIgnoreCase("description")) {
                                Objnewsbeen.description = nodefromList
                                        .getChildNodes().item(0).getNodeValue();

                            } else if (nodefromList.getNodeName()
                                    .equalsIgnoreCase("pubDate")) {
                                Objnewsbeen.pubdate = nodefromList
                                        .getChildNodes().item(0).getNodeValue();

                            } else if (nodefromList.getNodeName()
                                    .equalsIgnoreCase("link")) {
                                Objnewsbeen.link = nodefromList.getChildNodes()
                                        .item(0).getNodeValue();

                            } else if (nodefromList.getNodeName()
                                    .equalsIgnoreCase("guid")) {
                                Objnewsbeen.guid = nodefromList.getChildNodes()
                                        .item(0).getNodeValue();

                            } else {
                                // System.out.println();
                            }
                    }
                    parseFile(nodefromList);
                }
            }
        }

    }

    public static void main(String[] args) {
        new NewsParsing();
    }

}

Класс NewsBeen: ::

открытый класс NewsBeen {

public String title;
public String description;
public String pubdate;
public String link;
public String guid;

}

0 голосов
/ 05 сентября 2011

Я говорил вам, что окружение с помощью try / catch не работает, и теперь оно работает, потому что мне пришлось отслеживать исключение NullPointerException вместо простого исключения, например:

   try{
      message.setHotelImage(property.getFirstChild().getNodeValue());
   }catch(NullPointerException nEx){
      marchand.setImgHtlUrl("");
   }

спасибо, ребята, и извините за это предупреждение;)

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