好吧,我把xml-response放了很多符号,如下所示:
def xmlString = "<TAG1>1239071ABCDEFGH</TAG1><TAG2>1239071ABCDEFGH</TAG2>"
使用xmlSlurper只保留数字
def node =
new XmlSlurper().parseText(xmlString)
def nodelist = [node.tag1.tag2]
此“节点”获得类似“1239071123907112390711239071”的值 我试着把java RegExp用7分开数字
System.out.println(java.util.Arrays.toString( nodelist.node.split("(?<=\G.{7})") ))
我做错了什么?它不起作用
答案 0 :(得分:1)
假设您有一些有效的xml,如:
def xmlString = """<document>
| <TAG1>1239071ABCDEFGH</TAG1>
| <TAG2>1239071ABCDEFGH</TAG2>
|</document>""".stripMargin()
然后你可以得到所有以TAG
开头的元素,并且每个元素都修剪掉不是数字的结束字符:
def nodeList = new XmlSlurper().parseText( xmlString )
.'**'
.findAll { node ->
node.name().startsWith( 'TAG' )
}
.collect { node ->
it.text().takeWhile { ch ->
Character.isDigit( ch )
}
}
此示例中的 nodeList
将等于:
assert nodeList == ['1239071', '1239071']
如果您希望将这些数字与包含它们的TAG
相关联(假设TAGn
标记是唯一的),那么您可以更改为collectEntries
def nodeList = new XmlSlurper().parseText( xmlString )
.'**'
.findAll { node ->
node.name().startsWith( 'TAG' )
}
.collectEntries { node ->
[ node.name(), node.text().takeWhile { Character.isDigit( it ) } ]
}
assert nodeList == [TAG1:'1239071', TAG2:'1239071']