在我的java(/ spring / hibernate)Web应用程序中,我正在讨论这样的XML(为了示例目的,我已经将它简化了很多 - 我不能修改XML,因为我接收它来自第三方 - 我只控制客户端代码和客户端域对象 - 也没有XSD或WSDL来表示此XML):
<?xml version="1.0" encoding="utf-16"?>
<Records count="22321">
<Metadata>
<FieldDefinitions>
<FieldDefinition id="4444" name="name" />
<FieldDefinition id="5555" name="hair_color" />
<FieldDefinition id="6666" name="shoe_size" />
<FieldDefinition id="7777" name="last_comment"/>
<!-- around 100 more of these -->
</FieldDefinitions>
</Metadata>
<!-- Several complex object we don't care about here -->
<Record contentId="88484848475" >
<Field id="4444" type="9">
<Reference id="56765">Joe Bloggs</Reference>
</Field>
<Field id="5555" type="4">
<ListValues>
<ListValue id="290711" displayName="Red">Red</ListValue>
</ListValues>
</Field>
<Field id="6666" type="4">
<ListValues>
<ListValue id="24325" displayName="10">10</ListValue>
</ListValues>
</Field>
<Field id="7777" type="1">
<P>long form text here with escaped XML here too
don't need to process or derefernce the xml here,
just need to get it as string in my pojo<P>
</Field>
</Record>
<Record><!-- another record obj here with same fields --> </Record>
<Record><!-- another record obj here with same fields--> </Record>
<!-- thousands more records in the sameish format -->
</Records>
XML包含&#39;记录&#39;元素,其中包含一些元数据,然后大量的记录&#39;元素。每个记录元素都包含许多字段&#39;条目。
我的目标是使用JAXB将此XML解组为大量的记录&#39;对象。所以我可以这样做:
List<Record> unmarhsalledRecords = this.getRecordsFromXML(stringOfXmlShownAbove)
每条记录如下所示:
public class Record {
private String name;
private String hairColor;
private String shoeSize;
private String lastComment;
//lots more fields
//getters and setters for these fields
}
但是,我从来没有需要在jaxb中取消引用字段名称 - 甚至可以使用jaxb - 或者我是否需要使用stax解析器编写一些混乱/难以维护的代码?
我在网上找不到任何类似的例子 - 任何帮助都将不胜感激。
谢谢!
答案 0 :(得分:0)
我不认为jaxb支持复杂的映射逻辑。我能想到的几个选项。
例如
<Records>
<Record>
<Name>Joe Bloggs</Name>
<HairColour>Red</HairColour>
...
</Record>
</Records>