В ActionScript 3 как декодировать из xml в класс ActionScript? - PullRequest
1 голос
/ 07 января 2011

В ActionScript 3 как декодировать из xml в класс ActionScript?

Я мог бы кодировать из класса ActionScript в xml с помощью XmlEncoder.

Схема xml, которую я использовал в то время, это.

[schema1.xsd]

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<xs:schema version="1.0" xmlns:xs="http://www.w3.org/2001/XMLSchema">
  <xs:complexType name="user">
    <xs:sequence>
      <xs:element name="id" type="xs:string" minOccurs="0"/>
      <xs:element name="password" type="xs:string" minOccurs="0"/>
      <xs:element name="userDate" type="xs:dateTime" minOccurs="0"/>
    </xs:sequence>
  </xs:complexType>
</xs:schema>

Эта схема создается задачей Ant (schemagen) с использованием POJO (User.java) без аннотаций.

Но яне удалось декодировать из xml в класс ActionScript с помощью этой схемы и XmlDecoder.(Правильно, я не могу выполнить приведение из типа Object к типу User.)

Я не хочу помещать какие-либо аннотации, такие как @XmlRootElement или @XmlType, в класс Java.

ОднакоМне нужен файл схемы для клиентской части ActionScript для маршалинга и демаршалла.

Скажите, пожалуйста, какие-либо решения или примеры ...

1 Ответ

0 голосов
/ 07 января 2011

Следующий класс:

import java.util.Date;

public class User {

    private String id;
    private String password;
    private Date userDate;

    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    public Date getUserDate() {
        return userDate;
    }

    public void setUserDate(Date userDate) {
        this.userDate = userDate;
    }

}

Может использоваться для демонтажа следующего XML:

<?xml version="1.0" encoding="UTF-8"?>
<root>
   <id>123</id>
   <password>foo</password>
   <userDate>2011-01-07T09:15:00</userDate>
</root>

Использование следующего кода без каких-либо аннотаций для класса User:

import javax.xml.bind.JAXBContext;
import javax.xml.bind.JAXBElement;
import javax.xml.bind.Unmarshaller;
import javax.xml.transform.stream.StreamSource;

public class Demo {

    public static void main(String[] args) throws Exception {
        JAXBContext jc = JAXBContext.newInstance(User.class);

        StreamSource source = new StreamSource("input.xml");
        Unmarshaller unmarshaller = jc.createUnmarshaller();
        JAXBElement<User> root = unmarshaller.unmarshal(source, User.class);

        User user = root.getValue();
        System.out.println(user.getId());
        System.out.println(user.getPassword());
        System.out.println(user.getUserDate());
    }
}
...