Возникли проблемы при разборе XML-документа в Blackberry - PullRequest
1 голос
/ 21 июля 2011

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

public class XML_Parsing_Sample extends UiApplication {
 //creating a member variable for the MainScreen
MainScreen _screen= new MainScreen();
//string variables to store the values of the XML document
String _node,_element;
Connection _connectionthread;

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
         "System.out.println("1111111111111");"
  //creating a connection thread to run in the background
    _connectionthread = new Connection();
          "System.out.println("222222222222222");"
    _connectionthread.start();//starting the thread operation
          "System.out.println("After connection run");"
}
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());
    }
}
        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();
}}

И для отображения данных разбора на эмуляторе я использую следующий код, но он не работает.

public class Connection extends Thread {

public Connection() {
    // TODO Auto-generated constructor stub
    super();
        " System.out.println("outside run method");"
}
 public void run(String _node, String _element){ 
           "System.out.println("inside run method");"
    // define variables later used for parsing
     Document doc;
     StreamConnection conn; 
     try{
         //providing the location of the XML file,
         //your address might be different
         conn=(StreamConnection)Connector.open
           ("http://magazine.ateemo.com/magazines/by_publisher/2");
         //next few lines creates variables to open a
         //stream, parse it, collect XML data and
         //extract the data which is required.
         //In this case they are elements,
         //node and the values of an element
         DocumentBuilderFactory docBuilderFactory
           = DocumentBuilderFactory. newInstance();
         DocumentBuilder docBuilder
           = docBuilderFactory.newDocumentBuilder();
         docBuilder.isValidating();
         doc = docBuilder.parse(conn.openInputStream());
         doc.getDocumentElement ().normalize ();
         NodeList list=doc.getElementsByTagName("*");
         _node=new String();
         _element = new String();
         //this "for" loop is used to parse through the
         //XML document and extract all elements and their
         //value, so they can be displayed on the device

         for (int i=0;i<list.getLength();i++){
             Node value=list.item(i).
               getChildNodes().item(0);
             _node=list.item(i).getNodeName();
             _element=value.getNodeValue();
             updateField(_node,_element);
         }//end for

     }//end try
     //will catch any exception thrown by the XML parser
     catch (Exception e){
         System.out.println(e.toString());
     }
 }//end connection function
private void updateField(String _node, String _element) {
    // TODO Auto-generated method stub

}
}

1 Ответ

1 голос
/ 21 июля 2011

Первый шаг - выяснить, связана ли проблема с самим анализом или с отображением проанализированного результата. Я бы начал с добавления отладочных распечаток, чтобы посмотреть, правильно ли работает парсер. Таким образом, вы можете изолировать проблему до меньшей части кода.

...