Mejor enfoque para la creación de XML en Blackberry

He creado un archivo XML, pero no puedo verlo / mostrarlo. Sé que no hay forma de generar el archivo XML creado.

¿Puede alguien sugerir cuál es la mejor forma de crear archivos xml? 1. cree xml con DocumentBuilderFactory y luego analícelo O 2. manualmente cree hardcoded xml y guárdelo en la tarjeta SD y luego acceda a él para realizar el análisis sintáctico.

Tengo datos de texto continuamente variables en archivos xml. ¿Qué enfoque me satisfará más?

Estoy usando kXML2 para crear / chage / save / read xml. Utilizándolo con BlackBerry recuerda:
– para el lanzamiento debes preverlo y construir proj con ant
Ahmad Ferdous Bin Alam – Cómo importar archivos kxml jar a su proyecto
Slashdev – Desarrollo de BlackBerry con Ant & Eclipse
ACTUALIZACIÓN: Tutorial: Cómo utilizar bibliotecas de terceros en sus aplicaciones
– para la depuración debe agregar orígenes kXML y fonts org.xmlpull.v1 a su proyecto BB

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

Guardar XML en el sistema de archivos de BlackBerry

  • Si usa el emulador, no olvide emular la tarjeta SD (Herramientas-> Cambiar tarjeta SD …)
  • asegúrese de tener derechos de acceso para la operación de lectura / escritura

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

    Ver también:
    API de RIM – Interface FileConnection
    SUN Dev Network: introducción a las API de FileConnection
    RIM – How To – Agrega texto sin formato o archivos binarios a una aplicación
    BB Support Forum – Algunas preguntas sobre FileConnection / JSR 75
    Sony Ericsson Forum – Crear archivo XML

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

Ver también: RoseIndia.net – J2ME Kxml Example

Cambiar documento XML

Todo lo que tienes que hacer es obtener el elemento necesario y 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"); 

Salida del documento XML a la pantalla de BlackBerry (en algún lugar de la clase de pantalla)

Simplemente serialize xml doc en string y póngalo en 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())); 

¿Qué hay de usar la clase DOMInternalRepresentation ? A pesar de su nombre, es parte de la API pública y ha existido desde JDE 4.0.0. Usando DOMInternalReprestationClass puede escribir el Document en un XMLWriter .

Por ejemplo, para escribir en ByteArrayOutputStream (haciendo que sea útil enviar a través de una Connection ):

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

Naturalmente, puede usar un FileOutputStream para dirigir la salida XML a un archivo en disco en lugar de a una matriz de bytes.

(Si no puede usar bibliotecas externas por alguna razón, esto parece un enfoque bastante viable)

también puede usar net.rim.device.api.xml.jaxp.XMLWriter, pero necesita escribir una página completa de código para generar a menos que me haya olvidado de algo.