我有一个 xsd 架构
<xs:complexType name="valueType" mixed="true">
<xs:sequence>
<xs:element name="filename" type="xs:string" minOccurs="0" />
</xs:sequence>
</xs:complexType>
和 XML
<datapoint>
<fieldname>somestring</fieldname>
<value>some string</value>
</datapoint>
<datapoint>
<fieldname>somestring</fieldname>
<value>some string</value>
</datapoint>
<datapoint>
<fieldname>somestring</fieldname>
<value>
</filedata>
<filename>some string</filename>
</value>
</datapoint>
我使用了 JAXB 解析器并生成了一个类
public static class Value {
@XmlElementRef(name = "string", type = JAXBElement.class)
@XmlMixed
protected List<Serializable> content;
public List<Serializable> getContent() {
if (content == null) {
content = new ArrayList<Serializable>();
}
return this.content;
}
}
我可以使用 ValueObj.getContent() 获取值
<datapoint>
<fieldname>somestring</fieldname>
<value>some string</value>
</datapoint>
但我得到了一个文件名对象。何时从列表中读取字符串
<datapoint>
<fieldname>somestring</fieldname>
<value>
<filename>some string</filename>
</value>
</datapoint>
我必须使用两个 xsd 还是一个 xsd?我怎样才能获得标签内的值以及标签内的值。