Groovy 使用XmlSlurper以字符串形式检索整个节点
我想将Groovy 使用XmlSlurper以字符串形式检索整个节点,groovy,xmlslurper,Groovy,Xmlslurper,我想将的元素检索为字符串的数组,我正在尝试以下操作: import groovy.util.XmlSlurper def payload = '''<logs> <log> <text>LOG 1</text> <timestamp>2017-05-18T16:20:00.000</timestamp> </log> <log> <text>LOG 2</text>
的元素检索为字符串的数组,我正在尝试以下操作:
import groovy.util.XmlSlurper
def payload = '''<logs>
<log>
<text>LOG 1</text>
<timestamp>2017-05-18T16:20:00.000</timestamp>
</log>
<log>
<text>LOG 2</text>
<timestamp>2017-05-18T16:20:00.000</timestamp>
</log>
</logs>'''
def logs = new XmlSlurper().parseText(payload)
def result = []
logs.log.each{
result.add(it)
}
result
import groovy.util.XmlSlurper
def有效负载=“”
日志1
2017-05-18T16:20:00.000
日志2
2017-05-18T16:20:00.000
'''
def logs=new XmlSlurper().parseText(有效负载)
def结果=[]
logs.log.each{
结果。添加(it)
}
结果
但是,我正在获取这些值,但我希望将整个节点作为文本获取,大致如下所示:
[<log>
<text>LOG 1</text>
<timestamp>2017-05-18T16:20:00.000</timestamp>
</log>,
<log>
<text>LOG 2</text>
<timestamp>2017-05-18T16:20:00.000</timestamp>
</log>]
[
日志1
2017-05-18T16:20:00.000
,
日志2
2017-05-18T16:20:00.000
]
这在XmlSlurper
中是可能的,还是应该使用一些字符串操作?尝试以下方法:
def payload = '''<logs>
<log>
<text>LOG 1</text>
<timestamp>2017-05-18T16:20:00.000</timestamp>
</log>
<log>
<text>LOG 2</text>
<timestamp>2017-05-18T16:20:00.000</timestamp>
</log>
</logs>'''
def logs = new XmlSlurper().parseText(payload)
def result = []
logs.log.each{
result.add( "<log> <text>" + it?.'text'.text() + "</text> <timestamp> " + it?.'timestamp'.text() + "</timestamp> </log>")
}
return result
def负载=“”
日志1
2017-05-18T16:20:00.000
日志2
2017-05-18T16:20:00.000
'''
def logs=new XmlSlurper().parseText(有效负载)
def结果=[]
logs.log.each{
结果.添加(“+it?'text.text()+”+it?'timestamp.text()+”)
}
返回结果
试试这个:
def payload = '''<logs>
<log>
<text>LOG 1</text>
<timestamp>2017-05-18T16:20:00.000</timestamp>
</log>
<log>
<text>LOG 2</text>
<timestamp>2017-05-18T16:20:00.000</timestamp>
</log>
</logs>'''
def logs = new XmlSlurper().parseText(payload)
def result = []
logs.log.each{
result.add( "<log> <text>" + it?.'text'.text() + "</text> <timestamp> " + it?.'timestamp'.text() + "</timestamp> </log>")
}
return result
def负载=“”
日志1
2017-05-18T16:20:00.000
日志2
2017-05-18T16:20:00.000
'''
def logs=new XmlSlurper().parseText(有效负载)
def结果=[]
logs.log.each{
结果.添加(“+it?'text.text()+”+it?'timestamp.text()+”)
}
返回结果
您可以选择:
def payload = '''<logs>
<log>
<text>LOG 1</text>
<timestamp>2017-05-18T16:20:00.000</timestamp>
</log>
<log>
<text>LOG 2</text>
<timestamp>2017-05-18T16:20:00.000</timestamp>
</log>
</logs>'''
def logs = new XmlParser().parseText(payload)
def result = logs.log.collect {
def sw = new StringWriter()
def pw = new PrintWriter(sw)
new XmlNodePrinter(pw).print(it)
sw.toString().replaceAll('\\s', '')
}
def负载=“”
日志1
2017-05-18T16:20:00.000
日志2
2017-05-18T16:20:00.000
'''
def logs=new XmlParser().parseText(有效负载)
def result=logs.log.collect{
def sw=新的StringWriter()
def pw=新的PrintWriter(软件)
新的XmlNodePrinter(pw).print(it)
sw.toString().replaceAll('\\s','')
}
您可以选择:
def payload = '''<logs>
<log>
<text>LOG 1</text>
<timestamp>2017-05-18T16:20:00.000</timestamp>
</log>
<log>
<text>LOG 2</text>
<timestamp>2017-05-18T16:20:00.000</timestamp>
</log>
</logs>'''
def logs = new XmlParser().parseText(payload)
def result = logs.log.collect {
def sw = new StringWriter()
def pw = new PrintWriter(sw)
new XmlNodePrinter(pw).print(it)
sw.toString().replaceAll('\\s', '')
}
def负载=“”
日志1
2017-05-18T16:20:00.000
日志2
2017-05-18T16:20:00.000
'''
def logs=new XmlParser().parseText(有效负载)
def result=logs.log.collect{
def sw=新的StringWriter()
def pw=新的PrintWriter(软件)
新的XmlNodePrinter(pw).print(it)
sw.toString().replaceAll('\\s','')
}
您可以使用XmlUtil,但必须删除xml声明:
import groovy.util.XmlSlurper
import groovy.xml.XmlUtil
def payload = '''<logs>
<log>
<text>LOG 1</text>
<timestamp>2017-05-18T16:20:00.000</timestamp>
</log>
<log>
<text>LOG 2</text>
<timestamp>2017-05-18T16:20:00.000</timestamp>
</log>
</logs>'''
def logs = new XmlSlurper().parseText(payload)
def result = logs.log.collect {
XmlUtil.serialize(it).replaceAll(/<.xml.*?>/,"")
}
println result
import groovy.util.XmlSlurper
导入groovy.xml.XmlUtil
def有效负载=“”
日志1
2017-05-18T16:20:00.000
日志2
2017-05-18T16:20:00.000
'''
def logs=new XmlSlurper().parseText(有效负载)
def result=logs.log.collect{
XmlUtil.serialize(it).replaceAll(/,“”)
}
打印结果
您可以使用XmlUtil,但必须删除xml声明:
import groovy.util.XmlSlurper
import groovy.xml.XmlUtil
def payload = '''<logs>
<log>
<text>LOG 1</text>
<timestamp>2017-05-18T16:20:00.000</timestamp>
</log>
<log>
<text>LOG 2</text>
<timestamp>2017-05-18T16:20:00.000</timestamp>
</log>
</logs>'''
def logs = new XmlSlurper().parseText(payload)
def result = logs.log.collect {
XmlUtil.serialize(it).replaceAll(/<.xml.*?>/,"")
}
println result
import groovy.util.XmlSlurper
导入groovy.xml.XmlUtil
def有效负载=“”
日志1
2017-05-18T16:20:00.000
日志2
2017-05-18T16:20:00.000
'''
def logs=new XmlSlurper().parseText(有效负载)
def result=logs.log.collect{
XmlUtil.serialize(it).replaceAll(/,“”)
}
打印结果