2

我有带有元素的xml:

<attribute name="attributeName1" 
           type="typeName1">value1</attribute>
...
<attribute name="attributeName2" 
           type="typeName2">
    <row order="1">
        <attribute name="attributeName3" 
                   type="typeName3">value3</attribute>
        ...
    </row>
    ...
 </attribute>

这些元素如何在 xsd-schema 中声明?

4

1 回答 1

0

您可以定义attribute元素,使其具有混合内容的类型。如下所示:

<xsd:element name="attribute">
    <xsd:complexType mixed="true">
        <xsd:sequence>
            <xsd:element name="row" minOccurs="0" maxOccurs="unbounded">
                <xsd:complexType>
                    ...
                </xsd:complexType>
            </xsd:element>
        </xsd:sequence>
    </xsd:complexType>
</xsd:element>

这将为您提供一个类似于以下内容的 JAXB 类,您最终会得到一个将存储文本和Row对象的属性。

@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "", propOrder = {
    "content"
})
@XmlRootElement(name = "attribute")
public class Attribute {

    @XmlElementRef(name = "row", namespace = "http://www.example.org/schema", type = JAXBElement.class, required = false)
    @XmlMixed
    protected List<Serializable> content;

}

如果您改为执行以下操作,从长远来看,您可能会更快乐。

<attribute name="attributeName1" type="typeName1">
    <value>value1</value>
</attribute>
于 2013-07-23T18:51:05.953 回答