Java 基于子节点的XML解组

Java 基于子节点的XML解组,java,xml,jaxb,moxy,Java,Xml,Jaxb,Moxy,我最近通过HTTP API获得了一个旧的XML。它几乎没有响应类型,所有这些响应都没有名称空间或类型属性。它们都有相同的根节点,然后是不同的子节点集 java中有没有一种方法可以解压这样的XML?这就像使用子节点作为鉴别器字段一样。下面给出了两个样本答复 <Response> <A1/> <A2/> </Response> <Response> <B1/> <B2/> </Response> 最佳

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

java中有没有一种方法可以解压这样的XML?这就像使用子节点作为鉴别器字段一样。下面给出了两个样本答复

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

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

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

如果您想为不同的响应变体建立单独的模型,那么最好的方法是在开始时使用BufferedInputStream和call mark(),然后使用pull解析器(如XMLStreamReader)读取足够的文档,以确定实际的响应类型。然后,您可以将流重置为文档的开头,并使用带有适当数据模型的JAXB重新开始