2016-07-14 7 views
0

input.xmlファイルに存在しない "name"要素のデフォルト値を設定したいのですが? jaxbを通じてこれを達成する?、私はJavaモデルを通してそれをやりたいとは思わない。 shemaまたはjaxbを通してそれを得る方法はありますか? Customer.model要素がJavaのjaxbアンマーシャリングを介してxmlファイルに存在しない場合、要素のデフォルト値を設定する方法

@XmlAccessorType(XmlAccessType.FIELD) 
@XmlType(name = "", propOrder = { 
    "name", 
    "phoneNumber" 
}) 
@XmlRootElement(name = "customer") 
public class Customer { 

    @XmlElement(defaultValue = "ss") 
    protected String name; 
    @XmlElement(name = "phone-number", defaultValue = "200") 
    protected BigInteger phoneNumber; 
    public String getName() { 
     return name; 
    } 
    public void setName(String value) { 
     this.name = value; 
    } 
    public BigInteger getPhoneNumber() { 
     return phoneNumber; 
    } 
    public void setPhoneNumber(BigInteger value) { 
     this.phoneNumber = value; 
    } 
} 

3 input.xmlに

<customer> 

</customer> 

1 customer.xsd

<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"> 

    <xs:element name="customer"> 
     <xs:complexType> 
      <xs:sequence> 
       <xs:element name="name" type="stringMaxSize5" minOccurs="0" default="ss"/> 
       <xs:element name="phone-number" type="xs:integer" minOccurs="0" default="200" /> 
      </xs:sequence> 
     </xs:complexType> 
    </xs:element> 
    <xs:simpleType name="stringMaxSize5"> 
     <xs:restriction base="xs:string"> 
      <xs:maxLength value="5"/> 
     </xs:restriction> 
    </xs:simpleType> 

</xs:schema> 

2:以下 コードであります私は名前にnull値を取得していますし、私は「名前」要素を以下input.xmlにファイルを使用する場合、私は名のデフォルト値を取得しています、これを実行することにより

SchemaFactory sf =SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI); 
Schema schema = sf.newSchema(new File("customer.xsd")); 

JAXBContext jc = JAXBContext.newInstance(Customer.class); 
Unmarshaller unmarshaller = jc.createUnmarshaller(); 
unmarshaller.setSchema(schema); 
Customer customer = (Customer) unmarshaller.unmarshal(new File("input.xml")); 
System.out.println(customer.getName() + " " + customer.getPhoneNumber()); 

:以下のコードを使用して非整列化するために

フィールド。

したがって、欠落している要素のデフォルト値をjaxbから設定するにはどうすればよいですか?

答えて

関連する問題