Java 使用简单xml序列化程序(v2.6.6)的文档没有根元素异常

Java 使用简单xml序列化程序(v2.6.6)的文档没有根元素异常,java,android,xml,xml-serialization,Java,Android,Xml,Xml Serialization,我使用简单的xml库从套接字输入流反序列化对象。 而在简单的java应用程序中,同样的情况也很好,在android中,我得到了 MyObject obj = serializer.read(MyObject.class,socket.getInputStream()) org.simpleframework.xml.stream.NodeException:文档没有根 元素 为什么???您还没有收到数据。尝试设置日志并检查数据是否存在,因为我的上一篇文章被删除了这里是我的xml: <?x

我使用简单的xml库从套接字输入流反序列化对象。 而在简单的java应用程序中,同样的情况也很好,在android中,我得到了

MyObject obj = serializer.read(MyObject.class,socket.getInputStream())
org.simpleframework.xml.stream.NodeException:文档没有根 元素


为什么???

您还没有收到数据。尝试设置日志并检查数据是否存在,因为我的上一篇文章被删除了这里是我的xml:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<masterclass>
    <question className="Cosmos">
        <body>What year was the first step on the Moon?</body>
        <answer valid="0">1972</answer>
        <answer valid="0">1971</answer>
        <answer valid="0">1970</answer>
        <answer valid="1">1969</answer>
    </question>
    <question className="Cosmos">
        <body>Who were the first men to walk on the Moon?</body>
        <answer valid="1">Neil Armstrong</answer>
        <answer valid="0">Michael Collins</answer>
        <answer valid="0">Eugene Cernan</answer>
        <answer valid="1">Edwin Aldrin</answer>
    </question>
    <question className="History">
        <body>When did Christening of Poland took place?</body>
        <answer valid="0">1025</answer>
        <answer valid="1">966</answer>
        <answer valid="0">866</answer>
        <answer valid="0">916</answer>
    </question>
    <question className="Math">
        <body>Stone weighs 2kg and half stone. How much stone weighs?</body>
        <answer valid="0">2.5kg</answer>
        <answer valid="0">3kg</answer>
        <answer valid="1">4kg</answer>
        <answer valid="0">5kg</answer>
    </question>
</masterclass>
错误在这一行:

MasterClass mc = xmlSer.read(MasterClass.class, in);
更改为此时:

String str = "", s;
while((s = in.readLine()) != null) {
    str += s;
    //Log.d("MasterClass", str);
}
MasterClass mc = xmlSer.read(MasterClass.class, str);
它开始工作了。 不知道为什么。。。但根据我的研究,这可能与文件在设备上的保存方式有关:

OutputStream fos = new FileOutputStream(outputFile);
BufferedWriter br = new BufferedWriter(new OutputStreamWriter(fos, "UTF-8"));
br.write(content);
br.flush();
br.close();
和xml文件编码-在记事本++中设置为UTF-8,无BOM表


对于mods:不确定如何删除,所以请删除我下面的问题,tks:)

我的猜测是,您实际上没有收到任何数据,但如果没有更多信息,很难知道。数据确实来了:在java应用程序中,我正在做几乎相同的事情。如果您直接从流中读取数据并将其转储到日志中,它看起来像什么?我面临着同样的问题。。你找到解决办法了吗
OutputStream fos = new FileOutputStream(outputFile);
BufferedWriter br = new BufferedWriter(new OutputStreamWriter(fos, "UTF-8"));
br.write(content);
br.flush();
br.close();