Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jsf-2/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Groovy 使用XmlSlurper以字符串形式检索整个节点_Groovy_Xmlslurper - Fatal编程技术网

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(/,“”)
}
打印结果