gpt4 book ai didi

java - JAXB xsd 如何像引用一样使用数组成员

转载 作者:行者123 更新时间:2023-11-30 06:15:35 24 4
gpt4 key购买 nike

我有两个格式良好的.xml输入包含数据的文件。

character.xml

    <Character ID="1">
<Name>jfkfd</Name>
<CharPart>
<Marks>mk1 mk4 mk6 mk9</Marks>
...

ma​​rks.xml

    <Marks>
<Type ID="mk0">
<Name>None</Name>
</Type>
<Type ID="mk1">
<Name>abc</Name>
</Type>
<Type ID="mk2">
<Name>def</Name>
</Type>
...

我创建了一个 schema.xsd定义字符标记。到目前为止一切顺利。

<xsd:element name="Character">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="Name" type="xsd:string" />
<xsd:element name="CharPart">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="Marks" type="marksList"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
<xsd:attribute name="ID" type="xsd:string"/>
</xsd:complexType>
</xsd:element>

<xsd:element name="Marks">
<xsd:complexType >
<xsd:sequence>
<xsd:element name="Type" maxOccurs="unbounded">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="Name" type="xsd:string" />
</xsd:sequence>
<xsd:attribute name="ID" type="xsd:string" />
</xsd:complexType>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
</xsd:element>

<xsd:simpleType name="marksList">
<xsd:list itemType="xsd:string"/>
</xsd:simpleType>

解码这两个文件使我能够迭代这两个列表。这样我就可以检查 ma​​rksListid 中的值是否相等:

    for(Marks.Type type : marks.getType()) {
for(String s : character.getCharPart().getMarks()){
if(s.equals(type.getID())){
...
}
}
}

我现在的问题是有办法如何使用 <Marks>mk1 mk4 mk6 mk9</Marks>无需使用预处理器将它们分开,以便 JAXB 自动创建处理这些的 Java 源 "String"值作为引用?

最佳答案

尝试将类型更改为 xsd:IDREF 或通常使用 xsd:IDREFS 而不是 marksList

关于java - JAXB xsd 如何像引用一样使用数组成员,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49280469/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com