我有和XmlObject [],其数据类似于:list2
data
<xml-fragment xmlns:ax22="http://xyz...>
<ax21:array>1</ax21:array>
<ax21:array></ax21:array>
<ax21:array>124029</ax21:array>
<ax21:array>20170210</ax21:array>
<ax21:array>2</ax21:array>
</xml-fragment>
<xml-fragment>
.....
有没有简单的方法将其转换为List<Objects[]>
或java Array<A[]>
?请注意,有数百个这样的xml-fragment标签。
我正在使用带有XML绑定的Axis2,因为它支持java Array
实际上,我使用List<Object[]>
在Hibernate的group by子句中接收了query.list();
的web java.util.Collections
。现在,在网络服务中,它必须只处理没有特殊List<Object[]>
的数组,因此我将此Object[]
转换为guiObject
并将其作为响应发送到Object[] list2 = guiObject.getBatchListArray(); // This gives XmlObject[] which in turn contains other XmlAnyTypeImpl arrays.
for (Object entry : list2) {
Object[] obj = (Object[]) entry; // exception occurs here
中的客户端。
当我尝试迭代时收到响应:客户端代码:
org.apache.xmlbeans.impl.values.XmlAnyTypeImpl cannot be cast to [Ljava.lang.Object;
它给了我例外:
guiObject
<xml-fragment xsi:type="ax21:GuiObject" xmlns:ax22="http://model.kgs.persistence/xsd" xmlns:ax21="http://model.kgs.ws/xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ns="http://impl.kgs.ws" xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
<ax21:accountNot xsi:nil="true"/>
<ax21:assignedUser xsi:nil="true"/>
<ax21:batchList>
<ax21:array>1</ax21:array>
<ax21:array>KOREFFAA</ax21:array>
<ax21:array>103941</ax21:array>
<ax21:array>20170201</ax21:array>
<ax21:array>1</ax21:array>
</ax21:batchList>
<ax21:batchList>
.......
包含的实际数据:
guiObject
我可以使用getter从<h2></h2>
获取数据,但是在数组的情况下,这是不可能的。帮助!
答案 0 :(得分:0)
您可以使用JAXB实现它:
1)创建您的POJO:
@XmlRootElement(name="xml-fragment")
public class Fragment {
@XmlAttribute(name="xmlns:ax22")
private String ax22;
@XmlElement(name="ax21")
private String[] ax21;
//getters, setters, constructor
}
2)将您的xml解组为对象
try {
File file = new File("xmlfile.xml");
JAXBContext jaxbContext = JAXBContext.newInstance(Fragment.class);
Unmarshaller jaxbUnmarshaller = jaxbContext.createUnmarshaller();
Fragment frag= (Fragment) jaxbUnmarshaller.unmarshal(file);
System.out.println(frag.getAX22());
} catch (JAXBException e) {
e.printStackTrace();
}
了解更多here。