Преобразование строки UTF в InputStream - PullRequest
0 голосов
/ 07 августа 2011

Я пытаюсь получить данные XML с устройства MIDP на сервлет. Сервлет получает данные следующим образом -

DataInputStream dis = new DataInputStream((InputStream) request.getInputStream());
        String readUTF = dis.readUTF();

После того, как я сделал это из MIDP, я подумал, что все кончено. Но теперь у меня возникли проблемы с преобразованием readUTF в InputStream. Я хочу разобрать строку XML. Я использовал kXML 2.3.0 и вот код -

XmlPullParser xpp = new KXmlParser();
                try {
                    xpp.setInput(new InputStreamReader(new ByteArrayInputStream(readUTF.getBytes("UTF-8"))));
                    int event = xpp.getEventType();
                    if (event != xpp.END_DOCUMENT) {
                        System.out.println("Inside Document");
                        if (xpp.getName() != null) {
                            System.out.println("The tag is not null");
                            if (xpp.getName().equals("title")) {
                                System.out.println("Title =" + xpp.getText());
                            } else if (xpp.getName().equals("note")) {
                                System.out.println("Note =" + xpp.getText());
                            } else if (xpp.getName().equals("priority")) {
                                System.out.println("Priority =" + xpp.getText());
                            }
                        }
                        event = xpp.next();
                    }
                }

Проблема, с которой я сталкиваюсь, заключается в том, что только Внутренний документ напечатан. Это означает, что второй оператор print не имеет возможности выполнить. Я использовал Dom4j для того же.

SAXReader sr = new SAXReader();
sr.read(stringReader);
System.out.println(sr.getDocumentFactory().createDocument().asXML());

В результате получается что-то подобное:

INFO: <?xml version="1.0" encoding="UTF-8"?>

Исходная строка - <?xml version='1.0' encoding='UTF-8' ?> <data> <task><title>dsfsdfds</title><note>null</note><priority>High</priority></task><task><title>sdfsdfdsf</title><note>null</note><priority>High</priority></task> </data>

Я проверил XML для него, и он отлично работает. Есть ли проблема для преобразования UTF-8 в InputStreams? И есть ли другой способ синтаксического анализа моей строки XML для данных.

1 Ответ

3 голосов
/ 07 августа 2011

Я не знаю о вашем XmlPullParser коде, но ваш код dom4j не работает.Вы попросили SAXReader предоставить вам свой документ factory , который вы затем запрашиваете новый документ , а затем печатаете его.Другими словами, это не имеет ничего общего с данными, считанными из stringReader.Вы игнорируете результат вызова read.Попробуйте вместо этого:

SAXReader sr = new SAXReader();
Document doc = sr.read(stringReader);
System.out.println(doc.asXML());

Посмотрите, показывает ли это полный XML.

Я отмечаю, что в коде XmlPullParser вы не зацикливаетесь, как обычно, - вытолько читая первый узел, исследуя его, затем переназначая значение event - и затем ничего не делая.

...