Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/391.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 解组对象数组和数组_Java_Xml Serialization_Jaxb - Fatal编程技术网

Java 解组对象数组和数组

Java 解组对象数组和数组,java,xml-serialization,jaxb,Java,Xml Serialization,Jaxb,嗨,我对XML和Web服务非常陌生,但我从一个SOAP Web服务接收XML,看起来有点像这样: <?xml version="1.0" encoding="UTF-8" standalone="no"?> <ArrayOfCreditCardSettlement xmlns="http://schemas.datacontract.org/2004/07/Borgun.Library.Common"> <ns0:CreditCardSettle

嗨,我对XML和Web服务非常陌生,但我从一个SOAP Web服务接收XML,看起来有点像这样:

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
    <ArrayOfCreditCardSettlement xmlns="http://schemas.datacontract.org/2004/07/Borgun.Library.Common">
      <ns0:CreditCardSettlement xmlns="http://Borgun.Services.Gateway/2010/04/Settlement" xmlns:a="http://schemas.datacontract.org/2004/07/Borgun.Library.Common" xmlns:i="http://www.w3.org/2001/XMLSchema-instance" xmlns:msgns="http://Borgun.Services.Gateway/2010/04/Settlement" xmlns:ns0="http://schemas.datacontract.org/2004/07/Borgun.Library.Common" xmlns:ns1="http://j2ee.netbeans.org/wsdl/BorgunTestBPEL/entrypoint_getSettlements">
        <a:amexAmount>**</a:amexAmount>
        <a:amount>**</a:amount>
        <a:batches>
          <a:CreditCardBatch>
            <a:batchdate>***</a:batchdate>
            <a:batchnumber>***</a:batchnumber>
            <a:currencyCode>***</a:currencyCode>
            <a:merchantnumber>***</a:merchantnumber>
            <a:settlementRunNumber>***</a:settlementRunNumber>
            <a:settlementdate>***</a:settlementdate>
            <a:slips>*</a:slips>
            <a:sum>***</a:sum>
          </a:CreditCardBatch>
          .
          . 
           more batches

        <a:deductionItems>
            <a:CreditCardSettlementDeduction>
               <a:amount>***</a:amount>
               <a:code>**</a:code>
               <a:currencyCode>**</a:currencyCode>
               <a:merchantnumber>***</a:merchantnumber>
               <a:settlementrunnumber>***</a:settlementrunnumber>
               <a:text>***</a:text>
            </a:CreditCardSettlementDeduction>
         .
         . more deductionitems 
         </ns0:CreditCardSettlement>
         .
         . more Settlements
绑定已生成,并具有“ArrayOfCreditCardConsolution”、“CreditCardConsolution”和objectfactory等

现在我唯一能做的就是投给JAXBElement

即`JAXBElement a=(JAXBElement)unmarshaller.unmarshal(新文件(“…response3.xml”)

也许这就是我应该拥有的,但是从那以后,我应该如何使用这个呢

我想使用这个数组/列表,但我不知道下一步该怎么做

其他信息: 绑定是从xsd生成的

@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "ArrayOfCreditCardSettlement", propOrder = {
"creditCardSettlement"})
  public class ArrayOfCreditCardSettlement {

@XmlElement(name = "CreditCardSettlement", nillable = true)
protected List<CreditCardSettlement> creditCardSettlement;

public List<CreditCardSettlement> getCreditCardSettlement() {
    if (creditCardSettlement == null) {
        creditCardSettlement = new ArrayList<CreditCardSettlement>();
    }
    return this.creditCardSettlement;
}
@xmlacessortype(xmlacesstype.FIELD)
@XmlType(name=“arrayofcreditcardcolution”,比例器={
“信用卡结算”})
公共类ArrayOfCreditCardResolution{
@xmlement(name=“creditcardcolution”,nillable=true)
受保护的名单;
公共列表getCreditCardSettlement(){
如果(creditCardSettlement==null){
CreditCardResolution=新建ArrayList();
}
返回此。信用卡结算;
}
类似于CreditCardSettlement类

对象工厂有XMLElementDecl显式地命名名称空间,等等

  • 我很确定不能将集合作为顶级对象
  • 您是否设置了POJO和ObjectFactory?您应该能够直接解组到目标对象中

    CreditCardSettlementContainer ccsc = (CreditCardSettlementContainer) unmarshaller.unmarshal(yourFile);
    
  • 参考:


    另一方面,如果您刚刚开始使用,我强烈建议它更易于理解和使用,更不用说更灵活。

    JAXBElement有一个值,它应该是一个
    arrayofcreditcardcolution
    对象

    下面是一个代码示例,可以提供一些提示:

    非常感谢,这个有价值的东西完全避开了我的视线谢谢你的链接,我正试图直接解组到目标对象中,但不管出于什么原因,它都不起作用。我没有选择SimpleXML的奢侈,但感谢你的回复
    CreditCardSettlementContainer ccsc = (CreditCardSettlementContainer) unmarshaller.unmarshal(yourFile);