Better approach for XML Creation in Blackberry

前端 未结 3 1988
滥情空心
滥情空心 2020-12-01 13:54

I have created XML file,but I can\'t view it/output it.I know there is no way to output created XML file.

Can anyone please suggest what is better way of creating xm

3条回答
  •  一个人的身影
    2020-12-01 14:09

    I'm using kXML2 to create/chage/save/read xml. Using it with BlackBerry remember:
    - for release you have to preverify it & build proj with ant
    Ahmad Ferdous Bin Alam - How to Import kxml jar File to Your Project
    Slashdev - BlackBerry Development with Ant & Eclipse
    UPDATE: Tutorial: How To Use 3rd Party Libraries in your Applications
    - for debug you have to add kXML sources and org.xmlpull.v1 sources to your BB project

    Create XML

        Document d = new Document();
        Element root = d.createElement("", "parent");       
        root.setName("catalog");
        Element book = d.createElement("", "child");            
        book.setName("book");       
        book.setAttribute(null, "id", "1");             
        Element author = d.createElement("", "child");              
        author.setName("author");               
        author.addChild(0, Node.TEXT, "Colin Wilson");      
        book.addChild(0, Node.ELEMENT, author);
    
        Element title = d.createElement("", "child");           
        title.setName("title");             
        title.addChild(0, Node.TEXT, "The Mind Parasites");     
        book.addChild(1, Node.ELEMENT, title);
    
        Element genre = d.createElement("", "child");           
        genre.setName("genre");
        genre.addChild(0, Node.TEXT, "Horror novel, Science fiction novel");    
        book.addChild(2, Node.ELEMENT, genre);
    
        Element publishDate = d.createElement("", "child");             
        publishDate.setName("publish-date");                
        publishDate.addChild(0, Node.TEXT, "1967"); 
        book.addChild(3, Node.ELEMENT, publishDate);
    
        root.addChild(0, Node.ELEMENT, book);
        d.addChild(root.ELEMENT, root);
    

    Save XML on BlackBerry filesystem

    • If use emulator don't forget to emulate SD card (Tools->Change SD Card...)
    • be sure you have access rights for read/write operation

      String fileName = "file:///SDCard/books.xml";
      DataOutputStream os = null;
      FileConnection fc = null;
      try {
          fc = (FileConnection) Connector.open(fileName, Connector.READ_WRITE);
          if (!fc.exists())
              fc.create();
      
          os = fconn.openDataOutputStream();
          KXmlSerializer serializer = new KXmlSerializer();
          serializer.setOutput(os, "UTF-8");
          d.write(serializer);
      
      } catch (IOException e) {
          // TODO Auto-generated catch block
          e.printStackTrace();
      } 
      

      See also:
      RIM API - Interface FileConnection
      SUN Dev Network - Getting Started with the FileConnection APIs
      RIM - How To - Add plain text or binary files to an application
      BB Support Forum - Some questions about FileConnection/JSR 75
      Sony Ericsson Forum - Create XML file

    Read XML file

        Document d= new Document();
        FileConnection fc =  null;
        DataInputStream is = null;
        try {
            fc = (FileConnection) Connector.open(fileName, Connector.READ);
            is = fc.openDataInputStream();
    
            KXmlParser parser = new KXmlParser();
            parser.setInput(is, "UTF-8");
            d.parse(parser);
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (XmlPullParserException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    

    See also: RoseIndia.net - J2ME Kxml Example

    Change XML document

    All you have to do is get needed element and change it:

        Element catalog = d.getElement("", "catalog");
    
        Element book = catalog.getElement("", "book");
    
        Element title = book.getElement("", "title");
        title.removeChild(0);
        title.addChild(Element.TEXT, "Spider World: The Tower");
    
        Element publish = book.getElement("", "publish-date");
        publish.removeChild(0);
        publish.addChild(Element.TEXT, "1987");
    

    Output XML document to BlackBerry screen (somewhere in Screen class)

    Simply serialize xml doc to string and put it in RichTextField:

        deleteAll();
        ByteArrayOutputStream baos = new ByteArrayOutputStream();       
        KXmlSerializer serializer = new KXmlSerializer();
        try {
            serializer.setOutput(baos, "UTF-8");
            d.write(serializer);    
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }   
        add(new RichTextField(baos.toString()));
    

提交回复
热议问题