Лучший подход к созданию XML в Blackberry - PullRequest
2 голосов
/ 18 мая 2009

Я создал файл XML, но не могу его просмотреть / вывести. Я знаю, что нет способа вывести созданный файл XML.

Может кто-нибудь предложить, как лучше создать XML-файлы? 1. создать XML с DocumentBuilderFactory, а затем проанализировать его или 2. вручную создайте жестко закодированный xml и сохраните его на SD-карте, а затем получите доступ к нему для анализа.

У меня постоянно меняются текстовые данные в файлах XML. Какой подход подойдет мне больше всего?

Ответы [ 3 ]

15 голосов
/ 20 мая 2009

Я использую kXML2 для создания / chage / save / read xml. При использовании с BlackBerry помните:
- для релиза вы должны предварительно проверить его и собрать proj с помощью ant
Ахмад Фердоус Бин Алам - Как импортировать файл kxml jar в ваш проект
Slashdev - Разработка BlackBerry с Ant & Eclipse
ОБНОВЛЕНИЕ: Учебник. Как использовать сторонние библиотеки в своих приложениях
- для отладки необходимо добавить kXML-источники и org.xmlpull.v1 исходники в ваш проект BB

Создать 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);

Сохранить XML в файловой системе BlackBerry

Чтение файла 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();
    }

Смотри также: RoseIndia.net - Пример J2ME Kxml

Изменить XML-документ

Все, что вам нужно сделать, это получить необходимый элемент и изменить его:

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

Вывод документа XML на экран BlackBerry (где-то в классе Screen)

Просто сериализовать XML-документ в строку и поместить его в 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()));
1 голос
/ 11 марта 2010

А как насчет использования класса DOMInternalRepresentation? Несмотря на название, он является частью общедоступного API и существует с JDE 4.0.0. Используя DOMInternalReprestationClass, вы можете записать Document в XMLWriter.

Например, для записи в ByteArrayOutputStream (что делает его удобным для отправки через Connection):

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

Естественно, вы можете использовать FileOutputStream для направления вывода XML в файл на диске, а не в байтовый массив.

(Если по какой-то причине вы не можете использовать внешние библиотеки, это выглядит довольно жизнеспособным подходом)

0 голосов
/ 23 марта 2011

вы также можете использовать net.rim.device.api.xml.jaxp.XMLWriter но это должно написать целую страницу кода для генерации разве я что-то пропустил?

...