2011-01-07 2 views
1

В ActionScript 3, как декодировать из класса xml в ActionScript?В 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. (Правильно, я не могу сделать отливку от типа объекта до типа пользователя.)

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

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

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

ответ

0

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

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> 

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

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()); 
    } 
} 
+0

Спасибо, Блейз! На Java я думаю, что смогу писать вот так. Но как писать в ActionScript 3 для использования этого xml? – Take