Groovy,XmlParser,addNode,插入一个元素数组

时间:2017-10-25 15:45:48

标签: arrays xml groovy

我在下面有一个循环来在我的XML上创建一个变量数组。问题是它第一次运行时,它在我的输出数组中第一次出现时包含了我的所有行。 欢迎任何评论。 非常感谢!

pqpwp*.appendNode('PostalAcc', values[0])
pqpwp*.appendNode('CloseAmt', values[1])
pqpwp*.appendNode('Rates',)
def rates = ltrData.PqPwp.Rates
def values = ["Under 0          0.10%   0.08%      0.10%","Under 1          0.10%   0.08%      0.10%","Under 2          0.10%   0.08%      0.10%","Under 3          0.10%   0.08%      0.10%"]

for (int i = 2; i<10; i++)
{
    if (values[i])
    {
        rates*.appendNode('Rate',)
        def rate = ltrData.PqPwp.Rates.Rate
        rate*.appendNode('Column1', values[i].substring(0,14))
        rate*.appendNode('Column2', values[i].substring(15,23))
        rate*.appendNode('Column3', values[i].substring(24,31))
        rate*.appendNode('Column4', values[i].substring(32,42))
    }
}

实际的xml输出

      <ltrData>
        <PqPwp>
          <PostalAcc>910060121</PostalAcc>
          <CloseAmt>514.17</CloseAmt>
          <Rates>
            <Rate>
              <Column1>Under �1      2</Column1>
              <Column2>   0.10%</Column2>
              <Column3>  0.08%</Column3>
              <Column4>     0.10%</Column4>
              <Column1>�1 plus       3</Column1>
              <Column2>   1.39%</Column2>
              <Column3>  1.11%</Column3>
              <Column4>     1.40%</Column4>
            </Rate>
            <Rate>
              <Column1>�1 plus       3</Column1>
              <Column2>   1.39%</Column2>
              <Column3>  1.11%</Column3>
              <Column4>     1.40%</Column4>
            </Rate>
          </Rates>

需要xml输出

      <ltrData>
        <PqPwp>
          <PostalAcc>910060121</PostalAcc>
          <CloseAmt>514.17</CloseAmt>
          <Rates>
            <Rate>
              <Column1>Under �1      2</Column1>
              <Column2>   0.10%</Column2>
              <Column3>  0.08%</Column3>
              <Column4>     0.10%</Column4>
            </Rate>
            <Rate>
              <Column1>�1 plus       3</Column1>
              <Column2>   1.39%</Column2>
              <Column3>  1.11%</Column3>
              <Column4>     1.40%</Column4>
            </Rate>
          </Rates>

1 个答案:

答案 0 :(得分:0)

固定代码如下,希望其他人需要它:)

        if (values[i] != "")
            {
            def rate =  rates*.appendNode('Rate')
            rate*.appendNode('Column1',values[i].substring(0,14))
            rate*.appendNode('Column2', values[i].substring(15,23))
            rate*.appendNode('Column3', values[i].substring(24,31))
            rate*.appendNode('Column4', values[i].substring(32,42))
            }    
        }