Serializer SimpleXML只发送第一行

时间:2011-06-01 01:51:39

标签: java android xml servlets outputstream

尝试使用POST在Android和servlet之间发送文件xml时遇到问题。我正在使用(Simple XML)进行序列化。

我的servlet对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端获得此异常,因为它无法获得Element的第二行。

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 个答案:

答案 0 :(得分:1)

'a'上的私人访问可能是个问题。 Use the POJO options

@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;           
       }
}

请告诉我这是否适合您。