Синтаксический анализ XML в Grails - PullRequest
0 голосов
/ 11 октября 2011

Я новичок в Граале.Я хочу сохранить некоторые данные, используя REST.

Я получу XML из request.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-файла я хочу сохранить все данные в базу данных как новые данныене с тем же идентификатором.Я хочу связать данные с конкретной таблицей.

Заранее спасибо ..

Нимми

Ответы [ 3 ]

2 голосов
/ 11 октября 2011

Используйте XMLparser или XMLSlurper. Вот примеры , показывающие, как использовать каждый из них. Эти классы помогут вам только связать данные XML с объектами, вам придется справляться с персистентностью самостоятельно.

Если данные связаны с объектами домена Grails, то сохранение, вероятно, не намного сложнее, чем вызов save() для каждого.

1 голос
/ 12 октября 2011

Вы можете использовать точечную нотацию для обхода вашего объекта (если вас не интересуют селекторы на основе атрибутов).Так как этот grandParentNode.parentNode.childNode имеет смысл?

Вот отличный пример: http://groovy.codehaus.org/Reading+XML+using+Groovy's+XmlSlurper

0 голосов
/ 11 октября 2011

вы можете использовать это как ссылку. Вы можете разобрать свой xml следующим образом.

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

    println contract.@'id'
    println contract.startDate

   contract.pricings.each(){
      println it.@'id'
      println it.isOverage
   }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...