Лучший подход для создания XML в Blackberry

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

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

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

3 ответа

Решение

Я использую 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()));

Как насчет использования 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 в файл на диске, а не в байтовый массив.

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

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

Другие вопросы по тегам