0

私はブラックベリーでSAXパーサーを使用しようとしており、このチュートリアルを使用しました:

http://javarevisited.blogspot.com/2011/12/parse-read-xml-file-java-sax-parser.html#ixzz2OZJ6vB8O

これは私の構文解析クラスのコードです

import java.io.ByteArrayInputStream;

import java.io.InputStream;


import net.rim.device.api.xml.parsers.SAXParser;
import net.rim.device.api.xml.parsers.SAXParserFactory;

import org.xml.sax.Attributes;
import org.xml.sax.SAXException;
import org.xml.sax.XMLReader;
import org.xml.sax.helpers.DefaultHandler;

public class Samp extends DefaultHandler{

    String url = "http://ravee.clientarea.in/exhibitr/getData.php?db_table=events";
    TheVectorClass tcv ;

    boolean currentElement = false;
    String currentValue = "";

//   private Account acct;
     private String temp;


    public void parsingmethod()

     {     

        System.out.println("in parsingmethod");
         SAXParserFactory spfac = SAXParserFactory.newInstance();

         //Now use the parser factory to create a SAXParser object
         //Create an instance of this class; it defines all the handler methods
        Samp handler;    
        try {
            SAXParser sp = spfac.newSAXParser();


             handler = new Samp();


//           XMLReader = new 

             System.out.println("url is     "
                     + url );
             InputStream is  = new ByteArrayInputStream(url.getBytes());
             //Finally, tell the parser to parse the input and notify the handler
             System.out.println("value of is     " +is);
             System.out.println("value of is     " +handler);

//           System.out.println("            sp.parse(is, handler)                "+            
//          here in next line I get the error 
             sp.parse(is, handler);

        }  catch (Exception e) {
            // TODO Auto-generated catch block
            System.out.println("here in samp error 2");
            e.printStackTrace();
            System.out.println("e.gemessage  2  " +e.getMessage() );
        }



    //Read more: http://javarevisited.blogspot.com/2011/12/parse-read-xml-file-java-sax-parser.html#ixzz2OZJ6vB8O

     }



    /*
     * Every time the parser encounters the beginning of a new element,
     * it calls this method, which resets the string buffer
     */ 
    public void startElement(String uri, String localName,
                  String qName, Attributes attributes) throws SAXException {
           temp = "";

           System.out.println("reached");
           if (qName.equalsIgnoreCase("parameters")) {
//                  acct = new Account();
//                  acct.setType(attributes.getValue("type"));
                  System.out.println("val " +temp);

           }
    }

    /*
     * When the parser encounters the end of an element, it calls this method
     */
    public void endElement(String uri, String localName, String qName)
                  throws SAXException {

           if (qName.equalsIgnoreCase("nme")) {
                  // add it to the list
//                  accList.add(acct);

               System.out.println("val1 " +temp);

           }

           else if (qName.equalsIgnoreCase("descriptin")) {
//                  acct.setName(temp);

               System.out.println("val1 " +temp);
           }



}

私のスクリーンクラスでそれを次のように呼びます

public final class HomeScreen extends MainScreen
{
    /**
    * Creates a new HomeScreen object
    */

    Samp smp;
    String elemtn;

    Connection coon;
    boolean currentElement = false;
    String currentValue = "";

    HomeScreen hm;

    //     Samp smp ;
    TheVectorClass tcv ;
    public HomeScreen()
    {
        // Set the displayed title of the screen
        setTitle("parsing  ");
        final TheVectorClass tcv ;

        //        hm = new HomeScreen();

        smp = new Samp();

        try {
            MainScreenUpdaterThread thread = new MainScreenUpdaterThread(this , smp);
            thread.start();

            System.out.println("before");
            //            smp.parsingmethod();
            System.out.println("after");
        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
            System.out.println("e.get message   "+e.getMessage());
        }   
    }
}

そして私が得ているエラーは

要素を期待する

このエラーを解決するにはどうすればよいですか?

4

1 に答える 1

0

エラーは、入力ストリームを作成する方法が原因でした

InputStream is  = new ByteArrayInputStream(url.getBytes());

この方法を使用して、xmlファイルがローカルにあるときに入力ストリームを作成します。ファイルがサーバーにあるときは、接続を開く必要があります。そのためには、次のように接続を開きます。

最初にURLの文字列をstreamconnectionに変換します

StreamConnection stream = (StreamConnection)Connector.open(url);

and then open the input stream 

InputStream is =  stream.openInputStream();

次に、入力ストリームを使用してxmlを解析します

于 2013-04-03T13:50:29.243 に答える