我有两个包含数据的格式良好的.xml
输入文件。
character.xml
<Character ID="1">
<Name>jfkfd</Name>
<CharPart>
<Marks>mk1 mk4 mk6 mk9</Marks>
...
和
marks.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
definig 字符和标记。到目前为止一切都很好。
<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>
解压缩两个文件使我能够遍历两个列表。这样我就可以检查来自 marksList 和 id 的值之间的相等性,如下所示:
for(Marks.Type type : marks.getType()) {
for(String s : character.getCharPart().getMarks()){
if(s.equals(type.getID())){
...
}
}
}
我现在的问题是如何使用<Marks>mk1 mk4 mk6 mk9</Marks>
而不必使用预处理器将它们拆分,以便JAXB自动创建将这些"String"
值作为引用处理的Java源代码?
答案 0 :(得分:1)
尝试将类型更改为just_a_list = list_of_products
for product in just_a_list:
if list_of_products.count(product) > 1:
list_of_products.remove(product)
或通常使用xsd:IDREF
代替xsd:IDREFS
。