Java 需要关于将XML写入SQL Server数据库的帮助(详细信息)

Java 需要关于将XML写入SQL Server数据库的帮助(详细信息),java,soap,netbeans,xml-serialization,Java,Soap,Netbeans,Xml Serialization,我对XML和Web服务之类的东西有点陌生 我正在做一个项目,使用GlassFish OpenESB计划一个过程,从Web服务获取一些信息,然后存储在数据库中 标准基本上是我必须使用GlassFish OpenESB或EJB模块,在这些模块中我可以公开Web服务或类似的东西,并且我必须使用SQL Server 2005 到目前为止,我已经能够与Web服务进行对话:并收到一些类似的信息 <?xml version="1.0" encoding="UTF-8" standalone="no"?&

我对XML和Web服务之类的东西有点陌生

我正在做一个项目,使用GlassFish OpenESB计划一个过程,从Web服务获取一些信息,然后存储在数据库中

标准基本上是我必须使用GlassFish OpenESB或EJB模块,在这些模块中我可以公开Web服务或类似的东西,并且我必须使用SQL Server 2005

到目前为止,我已经能够与Web服务进行对话:并收到一些类似的信息

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://schemas.xmlsoap.org/soap/envelope/ http://schemas.xmlsoap.org/soap/envelope/">
  <SOAP-ENV:Body>
    <m:entrypoint_getSettlementsOperationResponse xmlns:m="http://j2ee.netbeans.org/wsdl/BorgunTestBPEL/entrypoint_getSettlements">
      <part1>
        <GetSettlementsByMerchantResponse xmlns="http://Borgun.Services.Gateway/2010/04/Settlement">
          <GetSettlementsByMerchantResult 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://j2ee.netbeans.org/wsdl/BorgunTestBPEL/entrypoint_getSettlements">
            <a:CreditCardSettlement>
              <a:amexAmount>XXX</a:amexAmount>
              <a:amount>XXXX</a:amount>
              <a:batches>
                <a:CreditCardBatch>
                  <a:batchdate>xxx</a:batchdate>
                  <a:batchnumber>XXXX</a:batchnumber>
                  <a:currencyCode>xxxx</a:currencyCode>
                  <a:merchantnumber>xxxx</a:merchantnumber>
                  <a:settlementRunNumber>xx4</a:settlementRunNumber>
                  <a:settlementdate>2010-04-06T00:00:00</a:settlementdate>
                  <a:slips>2</a:slips>
                  <a:sum>xxxx</a:sum>
                </a:CreditCardBatch>
                <a:CreditCardBatch>
                  <a:batchdate>xxx</a:batchdate>
                  <a:batchnumber>xxxxx</a:batchnumber>
                  <a:currencyCode>xxxx</a:currencyCode>
                  <a:merchantnumber>xxxx</a:merchantnumber>
                  <a:settlementRunNumber>xxxx</a:settlementRunNumber>
                  <a:settlementdate>xxxx</a:settlementdate>
                  <a:slips>x</a:slips>
                  <a:sum>xxx</a:sum>
                </a:CreditCardBatch>
              </a:batches>
              <a:commission>xx</a:commission>
              <a:currencyCode>xxx</a:currencyCode>
              <a:deduction>-xxx</a:deduction>
              <a:deductionItems>
                <a:CrediCardSettlementDeduction>
                  <a:amount>-xxx</a:amount>
                  <a:code>VIÐSKF</a:code>
                  <a:currencyCode>ISK</a:currencyCode>
                  <a:merchantnumber>xxx</a:merchantnumber>
                  <a:settlementrunnumber>xxx</a:settlementrunnumber>
                  <a:text>Afsláttur v/ekorta</a:text>
                </a:CrediCardSettlementDeduction>
                <a:CrediCardSettlementDeduction>
                  <a:amount>-335.00</a:amount>
                  <a:code>ÁLAGKREK</a:code>
                  <a:currencyCode>ISK</a:currencyCode>
                  <a:merchantnumber>xxx</a:merchantnumber>
                  <a:settlementrunnumber>xxx</a:settlementrunnumber>
                  <a:text>xxx</a:text>
                </a:CrediCardSettlementDeduction>
              </a:deductionItems>
            </a:CreditCardSettlement>
          </GetSettlementsByMerchantResult>
        </GetSettlementsByMerchantResponse>
      </part1>
    </m:entrypoint_getSettlementsOperationResponse>
  </SOAP-ENV:Body>
</SOAP-ENV:Envelope>
我可以访问SQL Server 2005 Server,它是远程的,我知道我可以插入其中,但鉴于现在我有一对多关系,我希望在出现故障时能够回滚

因此,简而言之,我如何更好地从这个XML插入到DB中,而不必手动遍历XML树

我很确定我应该能够使用实体和会话bean,或者可能是JAXB绑定,但我并没有成功

其中一个原因可能与soap响应包含一个CreditCardResolutions数组有关,每个数组都包含一个批处理和演绎的数组


如果有人能在GlassFish OpenESB中通过BPEL帮助我实现这一点,那将是最好的,但任何关于java解决方案的提示都将不胜感激。

您将希望使用JAXB。在/bin中找到xjc工具,它应该已经在您的路径中,然后在的模式中使用它。您应该首先下载模式,然后运行 xjc-d 目录应该是源文件夹,例如src,模式名称是您将模式下载到的位置的文件名。这将生成一组与模式对应的源文件。然后,您可以像这样使用JAXB解组器工具: JAXBContext ctx=JAXBContext.newInstanceEnvelope.class.getPackage.getName; 解组器u=ctx.createUnmarshaller; JAXBElement root=JAXBElement u.unmarshallxmlStr; 信封信封=root.getValue

信封将代表数据结构的根,您必须以某种方式将其写入SQL,我不知道这个问题的答案。xmlStr需要是包含xml内容的StringBuffer。JAXB的文档位于java.sun.com/javase/6/docs/api/javax/xml/bind/package-summary.html