我在我的一个软件中导入了一些遗留的XML文档。导致我一些麻烦的部分是 Param 元素的内容:
sample.xml中
<...>
<Param>
<IdNumber>12345678</IdNumber>
<Factor>12.3</Factor>
<Date>2015-07-01</Date>
<Counter unit="1">
<Medium>1</Medium>
...
</Counter>
<Counter unit="2">
<Medium>4</Medium>
...
</Counter>
...
</Param>
</...>
Param 中可能有许多(数字可能不同)子元素,为了避免在XSD中列出所有这些元素,这已被声明如下:
Schema.xsd
...
<xs:element name="Param">
<xs:complexType>
<xs:sequence>
<xs:any minOccurs="0" maxOccurs="unbounded" processContents="skip" />
</xs:sequence>
</xs:complexType>
</xs:element>
...
当我使用XJC工具生成编组/解组的一对一类时,这就是我得到的:
Param.java
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "", propOrder = {
"any"
})
@XmlRootElement(name = "Param")
public class Param {
@XmlAnyElement
protected List<Element> any;
public List<Element> getAny() {
if (any == null) {
any = new ArrayList<Element>();
}
return this.any;
}
}
我的问题是使用Param
类并不容易,因为它只包含Element的列表,需要对其进行改进。
我看到3个解决方案:
Param
类中的每个元素进行特定访问。Param
中使用Map而不是列表来简化搜索/提取元素。虽然我不知道如何实现这一点,但<Counter unit="1">
和<Counter unit="2">
的情况可能会有问题。所以,我正在寻找一些建议,通过提出另一种解决方案来选择这三种解决方案中的一种 OR 。
答案 0 :(得分:1)
我的意见;