2

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);

しかし、最後の行で、フィールド ts を読み取ろうとすると、次のようなエラーが発生します。

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;)

問題の原因は何ですか?どうすれば解決できますか?

4

1 に答える 1

1

クラスに注釈を追加する必要があります。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}
于 2013-01-04T00:06:42.943 に答える