【问题标题】:How to Parse webflow with JAXB如何使用 JAXB 解析 webflow
【发布时间】:2012-02-01 13:34:04
【问题描述】:

我使用 Spring webflow,我需要阅读流定义 此流程定义是一个 xml 文件... 我想用 JAXB 解析这个 XML:

<?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 列表始终为空(null) 怎么了?

【问题讨论】:

    标签: java xml parsing annotations jaxb


    【解决方案1】:

    您可以使用@XmlSchema 注解设置命名空间,使用 elementFormDefault 控制命名空间限定。

    包裹信息

    您可以通过在与您的域类相同的包中添加一个名为 package-info 的类来做到这一点。

    @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;
    
      ...
    
    }
    

    更多信息

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-03-19
      • 2012-12-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-09
      相关资源
      最近更新 更多