在黑莓中从URL解析XML数据时遇到问题

时间:2011-07-25 10:52:53

标签: xml parsing blackberry blackberry-simulator blackberry-jde

我使用KXML创建了一个XML解析应用程序。我想读取xml内容 InputStream格式,并希望在我的模拟器或控制台上显示该内容。

      import java.io.IOException;
      import java.io.InputStream;
      import java.util.Vector;

       import javax.microedition.io.Connector;
       import javax.microedition.io.StreamConnection;

        import net.rim.device.api.system.Bitmap;
        import net.rim.device.api.xml.parsers.DocumentBuilder;
       import net.rim.device.api.xml.parsers.DocumentBuilderFactory;
        import net.rim.device.api.xml.parsers.ParserConfigurationException;

        import org.w3c.dom.Document;
          import org.w3c.dom.Node;
        import org.w3c.dom.NodeList;
       import org.xml.sax.SAXException;

public class Connection1 extends Thread {

private Connection1bean conn1 = new Connection1bean();

public Connection1(InputStream is) {
    // TODO Auto-generated constructor stub
    StreamConnection conn;
    DocumentBuilderFactory documentbuilderfactory = DocumentBuilderFactory.newInstance();
    try{

        conn=(StreamConnection)Connector.open("http://magazine.ateemo.com/magazines/by_publisher/2;deviceside=true;interface=wifi");

        documentbuilderfactory.setCoalescing(true);
        DocumentBuilder docBuilder=documentbuilderfactory.newDocumentBuilder();
        Document doc = docBuilder.parse(is);
            Vector book = new Vector();
        NodeList nodelist = doc.getElementsByTagName("cid");
        Node node = nodelist.item(0);
        Node tempNode = ((NodeList)node.getChildNodes()).item(0);
        conn1.setCid(Integer.parseInt(tempNode.getNodeValue()));

        NodeList nodelist1 = doc.getElementsByTagName("description");
        Node node1 = nodelist1.item(0);
        Node tempNode1 = ((NodeList)node1.getChildNodes()).item(0);
        conn1.setDescription(tempNode1.getNodeValue());

        NodeList nodelist2 = doc.getElementsByTagName("publisher");
        Node node2 = nodelist2.item(0);
        Node tempNode2 = ((NodeList)node2.getChildNodes()).item(0);
        conn1.setPublisher((tempNode2.getNodeValue()));




        /*NodeList nodelist = doc.getElementsByTagName("image_url");
        Node node = nodelist.item(0);
        Node tempNode = ((NodeList)node.getChildNodes()).item(0);
        conn1.setimage_url(Integer.parseInt(tempNode.getNodeValue()));*/

        conn1.setBook(book);
        //conn.setimage_name(image_name);
    }   
     catch (ParserConfigurationException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (SAXException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

    }
    public Connection1bean getconn1(){
        return conn1;
}
}
    And i am using this below class to display the contents.


      import java.io.InputStream;

       import net.rim.device.api.ui.UiApplication;
    import javax.microedition.io.*;
       import net.rim.device.api.ui.*;
       import net.rim.device.api.ui.component.*;
       import net.rim.device.api.ui.container.*;
     import net.rim.device.api.browser.field.RequestedResource;
      import net.rim.device.api.lbs.maps.ui.RichMapField;
      import net.rim.device.api.system.*;
       import net.rim.device.api.xml.parsers.*;
      import org.w3c.dom.*;
    import org.xml.sax.*;
       public class XML_Parsing_Sample extends UiApplication {

 //creating a member variable for the MainScreen
  MainScreen _screen= new MainScreen();
  // MainScreen abc= new MainScreen();
//string variables to store the values of the XML document
String _node,_element;
//Connection _connectionthread;
  Connection1 _connectionthread1;
public XML_Parsing_Sample() {
    // TODO Auto-generated constructor stub
    _screen.setTitle("XML Parsing");//setting title
    _screen.add(new RichTextField("Requesting....."));
    _screen.add(new SeparatorField());
    //_screen.add(new RichTextField("XML data"));
    pushScreen(_screen); // creating a screen
  //creating a connection thread to run in the background
   System.out.println("1111111111111");
    _connectionthread1 = new Connection1();
    System.out.println("222222222222222");
    _connectionthread1.start();//starting the thread operation
   System.out.println("After connection run");
   // public void receive(Response response);
       //Connection1bean conbean=new Connection1bean();
       //String abc=conbean.getDescription();
}
public void updateField(String node, String element){
    //receiving the parsed node and its value from the thread
    //and updating it here
    //so it can be displayed on the screen
    String title="Title";
    _screen.add(new RichTextField(node+" : "+element));
    if(node.equals(title)){
        _screen.add(new SeparatorField());
    }
}
/**
 * @param args
 */
public static void main(String[] args) {
    // TODO Auto-generated method stub
    XML_Parsing_Sample application = new XML_Parsing_Sample();
  //create a new instance of the application
    //and start the application on the event thread
    application.enterEventDispatcher();
}

 }

0 个答案:

没有答案