2012-02-01 102 views
1

我使用Spring Webflow的,我需要閱讀的流程定義 解析的Webflow這個流程定義是一個XML文件...... 我要分析此XML與JAXB:如何使用JAXB

<?xml version="1.0" encoding="UTF-8"?> 
<flow xmlns="http://www.springframework.org/schema/webflow" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://www.springframework.org/schema/webflow 
     http://www.springframework.org/schema/webflow/spring-webflow-2.0.xsd" 
     parent="global-flow" > 

    <subflow-state id="aaaa" subflow="test/test19/aaaa"> 
     <transition on="torna" to="verificaPef" /> 
     <transition on="prosegui" to="bbbb" /> 
    </subflow-state> 

    <subflow-state id="bbbb" subflow="test/test19/bbbb"> 
     <transition on="torna" to="aaaa" /> 
     <transition on="prosegui" to="end" /> 
    </subflow-state> 

    <subflow-state id="cccc" subflow="common/cccc/page"> 
     <transition on="torna" to="bbbbb" /> 
    </subflow-state> 
</flow> 

我嘗試這種映射:

@XmlAccessorType(XmlAccessType.FIELD) 
@XmlRootElement(name = "flow", namespace = "http://www.springframework.org/schema/webflow") 
public class Flow { 

    @XmlElement(name = "subflow-state") 
    private List<SubFlow> subFlowList; 

    @XmlAttribute 
    private String parent; 

... 

@XmlAccessorType(XmlAccessType.FIELD) 
public class SubFlow { 

    @XmlAttribute(name="id") 
    private String id; 

    @XmlAttribute(name="subflow") 
    private String subflow; 

但不工作! subFlowList列表始終爲空(空) 有什麼不對?

回答

0

您可以使用@XmlSchema註釋來設置命名空間,並使用elementFormDefault來控制命名空間限定。

包信息

您可以通過添加在同一個包中的類名爲包信息作爲你的域類做到這一點。

@XmlSchema(
    namespace = "http://www.springframework.org/schema/webflow", 
    elementFormDefault = XmlNsForm.QUALIFIED) 
package example; 

import javax.xml.bind.annotation.XmlNsForm; 
import javax.xml.bind.annotation.XmlSchema; 

流量

這將使您刪除您以前可能添加了其他名稱空間信息。

@XmlAccessorType(XmlAccessType.FIELD) 
@XmlRootElement 
public class Flow { 

    @XmlElement(name = "subflow-state") 
    private List<SubFlow> subFlowList; 

    @XmlAttribute 
    private String parent; 

    ... 

} 

更多信息