Сериализатор SimpleXML просто отправит первую строку - PullRequest
3 голосов
/ 01 июня 2011

У меня проблема при попытке отправить файл xml между Android и сервлетом с POST. Я использую ( Simple XML ) для сериализации.

Мой сервлет делает ответ на Android:

Serializer serial = new Persister();
OutputStream o = response.getOutputStream();

MyXML myXML = new MyXML();
myXML.setMyElement("test");
serial.write(myXML, o);

Предполагается, что я отправлю мой xml напрямую клиенту,

<MyXML>
  <MyElement>test</MyElement>
</MyXML> 

Но он отправляет только первую строку. Затем на стороне Android появляется это исключение, потому что он не может получить вторую строку с элементом.

WARN/System.err(490): org.simpleframework.xml.core.ElementException: Element 'MyElement' does not have a match in class java.lang.Class at line -1

Я не могу понять, почему он сериализует только первую строку, когда я делаю это с OutputStream, потому что он работает, когда я сохраняю файлы без отправки,

Serializer serial = new Persister();
File file = new File("MyPath");

MyXML myXML = new MyXML();
myXML.setMyElement("test");
serial.write(myXML, file);

Мне нужно сделать это так, а не с байтами, просто чтобы не задавать длину содержимого ответа.

Большое спасибо,

РЕДАКТИРОВАТЬ : Добавление MyXML.class

Есть MyXML.class,

package part.myApp;

import org.simpleframework.xml.Element;
import org.simpleframework.xml.Root;

@Root(name="MyXML")
public class MyXML{

       @Element(name="MyElement")
       private String a;

       public void setMyElement(String a){
           this.a=a;
       }

       public String getMyElement() {
          return a;           
       }
}

Спасибо.

1 Ответ

1 голос
/ 01 июня 2011

Частный доступ к «а» может быть проблемой. Используйте опции POJO :

@Root(name="MyXML")
public class MyXML{
       private String a;

       @Element(name="MyElement")
       public void setMyElement(String a){
           this.a=a;
       }

       @Element(name="MyElement")
       public String getMyElement() {
          return a;           
       }
}

Дайте мне знать, если это работает для вас.

...