我有这个架构:
<xs:complexType name="foo">
<xs:sequence>
<xs:element name="oneBar" type="xs:string" minOccurs="0"/>
<xs:element name="twoBar" type="xs:string" minOccurs="0"/>
</xs:sequence>
</xs:complexType>
Run Code Online (Sandbox Code Playgroud)
当我试图解散这个
<foo>
<oneBar>1</oneBar>
<twoBar>2</twoBar>
</foo>
Run Code Online (Sandbox Code Playgroud)
它工作,但当我尝试解组这个xml:
<foo>
<twoBar>2</twoBar>
<oneBar>1</oneBar>
</foo>
Run Code Online (Sandbox Code Playgroud)
我得到一个excelption因为它关心顺序如果我试图解析相同的xml而不使用模式它在两种情况下都适用任何想法?
正如Strawberry指出的那样,如果用sc替换xs:sequence:任何顺序都不重要,你们中的任何人都知道我需要在我的课程中添加什么注释,这样才能生成xs:任何schmea
通过从xs创建类来找到解决方案:任何模式您只需要使用XmlType注释您的类并将prop命令设置为空,请参阅:
@XmlRootElement
@XmlType(name="foo",propOrder={})
public class Foo {
@XmlElement
public String oneBar;
@XmlElement
public String twoBar;
}
Run Code Online (Sandbox Code Playgroud)
序列要求元素按顺序排列,例如从w3schools页面: -
指标指定子元素必须以特定顺序出现:
在没有模式的情况下进行解组时,您实际上无法验证XML.
如果您希望您的架构不需要特定的排序,那么以下应该这样做: -
<xs:complexType name="foo">
<xs:all>
<xs:element name="oneBar" type="xs:string" minOccurs="0"/>
<xs:element name="twoBar" type="xs:string" minOccurs="0"/>
</xs:all>
</xs:complexType>
Run Code Online (Sandbox Code Playgroud)
从Java注释的角度来看它.如果我有一个名为类Test有两个字符串字段test1和test2,注释是: -
有序的案例,例如使用 <sequence>
@XmlType(name="",propOrder={"test1","test2"})
@XmlRootElement(name="test")
public class Test
{
@XmlElement(required=true)
private String test1;
@XmlElement(required=true)
private String test2;
}
Run Code Online (Sandbox Code Playgroud)
无序的案例,例如使用 <all>
@XmlType(name="",propOrder={})
@XmlRootElement(name="test")
public class Test
{
@XmlElement(required=true)
private String test1;
@XmlElement(required=true)
private String test2;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2051 次 |
| 最近记录: |