如何使用smooks groovy将子元素附加到元素

时间:2015-08-31 16:05:16

标签: groovy smooks

我正在尝试将Smooks与Groovy一起用于appendChild()元素。到目前为止,我一直无法这样做。

示例输入文件

<?xml version="1.0"?>
<orders>
    <order res="0">
        <header>
            <date>Wed Nov 27 13:45:28 EST 2013</date>
            <customer number="9404089839">Harish Nanda M</customer>
        </header>
        <orderitems>
            <orderitem>
                <product>007</product>
                <quantity>7</quantity>
                <price>7.90</price>
            </orderitem>
            <orderitem>
                <product>005</product>
                <quantity>3</quantity>
                <price>7.20</price>
            </orderitem>
        </orderitems>
    </order>
    <order res="0">
        <header>
            <date>Wed Nov 27 13:45:28 EST 2013</date>
            <customer number="2036139296">Sandesh G</customer>
        </header>
        <orderitems>
            <orderitem>
                <product>0023</product>
                <quantity>87</quantity>
                <price>57.90</price>
            </orderitem>
            <orderitem>
                <product>005</product>
                <quantity>3</quantity>
                <price>7.20</price>
            </orderitem>
        </orderitems>
    </order>
</orders>

Smooks配置文件

<?xml version="1.0"?>
<smooks-resource-list xmlns="http://www.milyn.org/xsd/smooks-1.1.xsd" xmlns:core="http://www.milyn.org/xsd/smooks/smooks-core-1.3.xsd" xmlns:g="http://www.milyn.org/xsd/smooks/groovy-1.1.xsd">
    <core:filterSettings type="SAX"/>
    <g:groovy executeOnElement="order">
        <g:imports>
            import org.milyn.xml.DomUtils;  
            import org.milyn.javabean.context.BeanContext;  
            import org.milyn.javabean.repository.BeanRepository;    
            import org.w3c.dom.*;
            import groovy.xml.dom.DOMCategory;  
            import groovy.xml.dom.DOMUtil;
            import groovy.xml.DOMBuilder;   
            import groovy.util.XmlSlurper;
        </g:imports>
        <g:script>
            <!--    javax.xml.transform.dom.DOMSource source = new javax.xml.transform.dom.DOMSource(element); 
javax.xml.transform.Transformer transformer = javax.xml.transform.TransformerFactory.newInstance().newTransformer();
    javax.xml.transform.stream.StreamResult result = new
 javax.xml.transform.stream.StreamResult(new java.io.StringWriter()); 
    transformer.transform(source, result);  String ss = 
 result.getWriter().toString();     def ord = new
 XmlSlurper().parseText(ss)     //ord.xxxx = "2222";    println
 ord.orderitems.orderitem.product.text()*.toInteger().sum();
element.appendChild("res");     //element['@res'] = element.'@res'.toInteger() +    
 ord.orderitems.orderitem.product.text()*.toInteger().sum();
writeFragment(element);
-->
        </g:script>
    </g:groovy>
</smooks-resource-list>

0 个答案:

没有答案