gpt4 book ai didi

java - Android 上的 SimpleXML 和反序列化时出错

转载 作者:行者123 更新时间:2023-11-30 11:39:15 24 4
gpt4 key购买 nike

我正在尝试使用 SimpleXML 在 Android 设备上反序列化一个对象。在 Maven 文件中,我使用了带排除项的依赖项(我遵循了另一个问题中的建议,因为不排除这些依赖项,我无法启动应用程序):

<dependency>
<groupId>org.simpleframework</groupId>
<artifactId>simple-xml</artifactId>
<version>2.6.7</version>
<exclusions>
<!-- StAX is not available on Android -->
<exclusion>
<artifactId>stax</artifactId>
<groupId>stax</groupId>
</exclusion>
<exclusion>
<artifactId>stax-api</artifactId>
<groupId>stax</groupId>
</exclusion>
<!-- Provided by Android -->
<exclusion>
<artifactId>xpp3</artifactId>
<groupId>xpp3</groupId>
</exclusion>
</exclusions>

为了测试我只写了一个简单的类:

class Test {
String s;
}

然后我尝试获取一个对象:

Test t = null;
try {
t = serializer.read(Test.class, source);
} catch (Exception e) {
e.printStackTrace();
}

Log.v("t",t.s);

但在最后一行,当我尝试读取字段 t.s 时,出现如下错误:

Could not find method javax.xml.stream.XMLInputFactory.newInstance, referenced from method org.simpleframework.xml.stream.StreamProvider.<init>

unable to resolve static method 3372: Ljavax/xml/stream/XMLInputFactory;.newInstance ()Ljavax/xml/stream/XMLInputFactory;

dead code 0x0006-0009 in Lorg/simpleframework/xml/stream/StreamProvider;.<init>

unable to find class referenced in signature (Ljavax/xml/stream/XMLEventReader;)

问题的原因是什么,我该如何解决?

最佳答案

你必须给你的类添加注释。我用 Simple XML 2.6.9(仅限 simple-xml-2.6.9.jar)做了一个小测试 --> 没问题。

XML:

<test>
<s>abc</s>
</test>

测试类:

@Root
public class Test
{
@Element
String s;


@Override
public String toString()
{
return "Test{" + "s=" + s + '}';
}
}

反序列化 XML:

final File f =  ...


Serializer ser = new Persister();
Test t = ser.read(Test.class, f);

System.out.println(t);

输出:

Test{s=abc}

关于java - Android 上的 SimpleXML 和反序列化时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13361839/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com