Migliore approccio per XML Creation in Blackberry

Ho creato un file XML, ma non riesco a visualizzarlo / emetterlo. So che non c’è modo di generare file XML creato.

Qualcuno può suggerire quale sia il modo migliore per creare file xml? 1. creare xml con DocumentBuilderFactory e quindi analizzarlo O 2. creare manualmente xml hardcoded e salvarlo su sd card e quindi accedervi per l’analisi.

Dispongo continuamente di dati di testo diversi nei file xml. Quale approccio mi soddisferà di più?

Sto usando kXML2 per creare / chage / save / read xml. Usandolo con BlackBerry ricorda:
– per il rilascio devi metterlo in pratica e build pro con formica
Ahmad Ferdous Bin Alam – Come importare il file jar kxml nel tuo progetto
Slashdev – Sviluppo BlackBerry con Ant & Eclipse
AGGIORNAMENTO: Tutorial: Come utilizzare le librerie di terze parti nelle tue applicazioni
– per il debug devi aggiungere sorgenti kXML e sorgenti org.xmlpull.v1 al tuo progetto BB

Crea 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); 

Salva XML sul filesystem BlackBerry

  • Se usi l’emulatore non dimenticare di emulare la scheda SD (Strumenti-> Cambia scheda SD …)
  • assicurati di disporre dei diritti di accesso per le operazioni di lettura / scrittura

     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(); } 

    Guarda anche:
    API RIM – Interface FileConnection
    SUN Dev Network – Introduzione alle API di FileConnection
    RIM – How To – Aggiungi testo semplice o file binari a un’applicazione
    Forum di supporto BB: alcune domande su FileConnection / JSR 75
    Forum Sony Ericsson – Crea file XML

Leggi il file XML

  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(); } 

Vedi anche: RoseIndia.net – Esempio K2ML J2ME

Cambia documento XML

Tutto quello che devi fare è ottenere l’elemento necessario e cambiarlo:

  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"); 

Emissione di un documento XML sullo schermo BlackBerry (da qualche parte nella class Screen)

È sufficiente serializzare il documento xml in stringa e inserirlo 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())); 

Che ne pensi dell’utilizzo della class DOMInternalRepresentation ? Nonostante il suo nome, fa parte dell’API pubblica ed esiste da JDE 4.0.0. Usando il DOMInternalReprestationClass puoi scrivere il Document su un XMLWriter .

Ad esempio, per scrivere su ByteArrayOutputStream (rendendolo utile per l’invio su una Connection ):

 ByteArrayOutputStream os = new ByteArrayOutputStream(); XMLWriter xw = new XMLWriter(os); DOMInternalRepresentation.parse( myDocument, xw ); 

Naturalmente, è ansible utilizzare FileOutputStream per indirizzare l’output XML su un file su disco anziché su un array di byte.

(Se non puoi usare le librerie esterne per qualche motivo, questo sembra un approccio abbastanza fattibile)

puoi anche utilizzare net.rim.device.api.xml.jaxp.XMLWriter ma è necessario scrivere un’intera pagina di codice per generare a meno che non mi sia sfuggito qualcosa?