如何在groovy中从XML节点中删除属性

时间:2015-07-06 22:50:11

标签: xml groovy xmlslurper

我正在尝试解析XML文件并获取节点的子集,删除了某些属性。

我尝试过的一个示例:

def xml = """<root>
  <record class="test">Some text
   <foo  id="something">Foo</foo>
  </record>
  <record>Some other text</record>
  </root>"""

   def root = new XmlSlurper().parseText(xml)
   def record = root.record.find{ it.@class=='test'}
   println new StreamingMarkupBuilder().bindNode(record)

// Output:
// <record class='test'>Some text
// <foo id='something'>Foo</foo></record>

   def rec = record.foo.each { p -> p.attributes().remove('id') }
   println rec
   println new StreamingMarkupBuilder().bindNode(rec)

// Output:
// <foo>Foo</foo>

我想得到什么:

// <record class='test'>Some text
//  <foo>Foo</foo></record>

如何在不提取子节点的情况下从“记录”的子节点中删除“id”?

1 个答案:

答案 0 :(得分:0)

你需要:

println new StreamingMarkupBuilder().bindNode(record) 

rec设置为each的结果,将其设置为record.foo,而我相信您想要记录