加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

如何使用Groovy插入/移动/删除xml中的节点?

发布时间:2020-12-14 16:34:41 所属栏目:大数据 来源:网络整理
导读:例如,我有以下xml文档: def CAR_RECORDS = ''' records car name='HSV Maloo' make='Holden' year='2006'/ car name='P50' make='Peel' year='1962'/ car name='Royale' make='Bugatti' year='1931'/ /records ''' 我想把汽车“皇家”推到第一位,并在汽车“
例如,我有以下xml文档:

def CAR_RECORDS = '''
    <records>
      <car name='HSV Maloo' make='Holden' year='2006'/>
      <car name='P50' make='Peel' year='1962'/>
      <car name='Royale' make='Bugatti' year='1931'/>
    </records>
  '''

我想把汽车“皇家”推到第一位,并在汽车“HSV Maloo”之后插入一辆新车,结果是:

'''
    <records>
      <car name='Royale' make='Bugatti' year='1931'/>
      <car name='HSV Maloo' make='Holden' year='2006'/>
      <car name='My New Car' make='Peel' year='1962'/>
      <car name='P50' make='Peel' year='1962'/>
    </records>
  '''

如何使用Groovy?欢迎评论.

解决方法

我去了一条类似于danb的路线,但是在实际打印出结果的XML时遇到了问题.然后我意识到,通过询问所有这个“car”孩子的根而返回的NodeList与你刚才要求根的孩子所得到的不一样.即使在这种情况下他们碰巧是相同的名单,如果根本没有“汽车”的孩子,他们并不总是这样.因此,重新列出从查询返回的汽车列表不会影响初始列表.

这是一个附加和重新排序的解决方案:

def CAR_RECORDS = '''
   <records>
     <car name='HSV Maloo' make='Holden' year='2006'/>
     <car name='P50' make='Peel' year='1962'/>
     <car name='Royale' make='Bugatti' year='1931'/>
   </records>
 '''

def carRecords = new XmlParser().parseText(CAR_RECORDS)

def cars = carRecords.children()
def royale = cars.find { it.@name == 'Royale' } 
cars.remove(royale)
cars.add(0,royale)
def newCar = new Node(carRecords,'car',[name:'My New Car',make:'Peel',year:'1962'])

assert ["Royale","HSV Maloo","P50","My New Car"] == carRecords.car*.@name

new XmlNodePrinter().print(carRecords)

具有正确订购汽车的断言通过,XmlNodePrinter输出:

<records>
  <car year="1931" make="Bugatti" name="Royale"/>
  <car year="2006" make="Holden" name="HSV Maloo"/>
  <car year="1962" make="Peel" name="P50"/>
  <car name="My New Car" make="Peel" year="1962"/>
</records>

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读