2011-10-11 163 views
0

我是grails的新手。我想用REST保存一些數據。Grails中的XML解析

我將從request.XML獲取xml。它有子節點和子節點也有子節點..

對於前:

<?xml version="1.0" encoding="UTF-8"?> 

<contract id="1"> 

    <startDate>2011-09-11</startDate> 

    <orderType /> 

    <charges> 

     <charge id="3"> 

      <Code>MO-AV-SP-2008</Code> 

      <position>1</position> 

      <isPaid>false</isPaid> 

      <isPenalty>false</isPenalty> 

      <billerGroupCode /> 

      <pricings> 

       <pricing id="7"> 

        <unitsTo /> 

        <percent /> 

        <isOverage>false</isOverage> 

        <contractCharge id="2" /> 

        <lastUpdated>2011-09-11</lastUpdated> 

        <currency id="USD" /> 

        <price>100.00</price> 

        <dateCreated>2011-09-11</dateCreated> 

        <unitsFrom /> 

       </pricing > 

      </pricings> 

      <isProrated>false</isProrated> 

      <unitOfMeasure /> 

      <priceCode>SNGL-SETUP</priceCode> 

      <invoiceText>Setup fee</invoiceText> 

      <pricingType>FixedPricing</pricingType> 

      <lastUpdated>2011-09-11</lastUpdated> 

      <standardQuantity /> 

      <isTax>false</isTax> 

      <maxQuantity /> 

      <taxCodes /> 

      <isMandatory>false</isMandatory> 

      <dateCreated>2011-09-11</dateCreated> 

      <isSeparateInvoice>false</isSeparateInvoice> 

      <chargeType>OneTimeCharge</chargeType> 

      <notes>Setup Fee</notes> 

      <minQuantity /> 

     </charge> 

    </charges> 

    <dueDateValue>1</dueDateValue> 

    <invoiceText>Monthly</invoiceText> 

    <lastUpdated>2011-10-10</lastUpdated> 

    <endDate>2012-09-10</endDate> 

    <interestRate /> 

    <fixedChargesReducePayoff /> 

    <billingPeriod>Monthly</billingPeriod> 

    <name>Anti Virus</name> 

    <isAutoRenew>false</isAutoRenew> 

    <dateCreated>2011-09-11</dateCreated> 

    <notes>Pay monthly for Anti Virus</notes> 

    <numberOfInstallments /> 

    <product id="3" /> 

    <contractCode>B-Mo-AV-SP</contractCode> 

    <dueDateUnits>Months</dueDateUnits> 

    <billingAlignment>StartDate</billingAlignment> 

</contract> 

從上面的XML我想所有提交的數據到數據庫保存爲一個新的數據,而不是用相同的ID。我想將數據綁定到特定的表。

在此先感謝..

Nimmy

回答

2

使用XMLparser或XMLSlurper。顯示如何使用每個。這些類只會幫助您將XML數據綁定到對象,您必須自己處理持久性。

如果數據綁定到Grails域對象,那麼持久性可能不比每個調用save()複雜得多。

0

您可以使用此作爲參考。你可以像這樣解析你的xml。

def a = "YOUR XML DATA" 
    def contract = new XmlSlurper().parseText(a) 

    println [email protected]'id' 
    println contract.startDate 

    contract.pricings.each(){ 
     println [email protected]'id' 
     println it.isOverage 
    }