繁体   English   中英

基于子节点的XML解组

[英]XML UnMarshalling based on child nodes

最近,我通过HTTP API获得了旧的XML。 它几乎没有响应类型,所有这些响应都没有名称空间或类型属性。 它们都具有相同的根节点,然后具有不同的子节点集。

Java中有没有办法解组此类XML? 就像使用子节点作为区分字段一样。 下面给出了两个样本响应。

<Response>
<A1/>
<A2/>
</Response>

<Response>
<B1/>
<B2/>
</Response>

最好的方法实际上取决于您要做什么。 例如,如果只想解组数据,则可以使用JAXB定义模型,其中包括所有潜在的子元素。 然后,当您解组实例文档时,只有文档中实际存在的子元素才具有值。

相反,如果您希望针对不同的响应变体使用单独的模型,则最好的方法是在开始时使用BufferedInputStream并调用mark(),然后使用诸如XMLStreamReader之类的拉式解析器读取足够的文档以确定实际的响应类型。 然后,您可以将stream重置()到文档的开头,并使用具有适当数据模型的JAXB重新开始。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM