嗨,我的groovy脚本从文件中剥离xml标记并写入文件。
import org.apache.commons.lang.RandomStringUtils
import groovy.util.XmlSlurper
inputFile = 'C:\\sample.xml'
outputFile = 'C:\\ouput.txt'
XMLTag='Details'
fileContents = new File(inputFile).getText('UTF-8')
def xmlFile=new XmlSlurper().parseText(fileContents)
def myPayload= new String(xmlFile.'**'.find{node-> node.name() == XMLTag} *.text().toString())
file = new File(outputFile)
w = file.newWriter()
w << myPayload.substring(1, myPayload.length()-1)
w.close()
我的问题是我如何编写它,以便它通过整个目录,在多个xml文件上执行它,并创建多个输出,因为它现在是硬编码的。(“C:\sample.xml”和“C:\ouput.txt”)
谢谢
利昂
首先,我会建议你拿你所拥有的,并把它放入一个单一的功能;它是一个很好的编码实践,提高了可读性。
现在要在目录中的每个xml文件上执行该函数,您可以使用Groovy的file.eachFileMatch()。例如,如果要在当前目录中的每个xml文件上运行它,可以执行以下操作:
import org.apache.commons.lang.RandomStringUtils
import groovy.util.XmlSlurper
import static groovy.io.FileType.*
void stripTag(File inputFile, String outputFile) {
def XMLTag='Details'
fileContents = inputFile.getText('UTF-8')
def xmlFile=new XmlSlurper().parseText(fileContents)
def myPayload= new String(xmlFile.'**'.find{node-> node.name() == XMLTag}*.text().toString())
def file = new File(outputFile)
w = file.newWriter()
w << myPayload.substring(1, myPayload.length()-1)
w.close()
}
// This will match all files in the current directory with the file extension .xml
new File(".").eachFileMatch(FILES, ~/.*\.xml/) { File input ->
// Set the output file name to be <file_name>_out.txt
// Change this as you need
stripTag(input, input.name + "_out.txt")
}
如果您愿意,也可以从命令行添加目录中的读取。
我需要一个groovy脚本的代码示例,它可以访问存储在我的文件系统中任何地方的xml文件。在这个xml文件中,我有数据库凭据,我的脚本需要访问数据库。下面是xml 提前致谢:)
问题内容: 我正在尝试将一个大型xml文件拆分为多个文件,并在AWK脚本中使用了以下代码。 上面的代码生成一个名称为“ fileItem_1”,“ fileItem_2”,“ fileItem3”等的xml文件列表。 但是,我希望文件名类似于“ item_XXXXX”,其中XXXXX是XML内的一个节点-如下图所示 因此,基本上我希望“ id”节点为文件名。谁能帮我这个忙吗? 问题答案: 我不会用
要求:从文件夹中读取xml文件,并将文件内容传递给Soap请求。 问题我正在尝试使用groovy脚本读取保存在文件夹中的文件,但无法读取文件的内容。我在尝试打印xml文件的内容时遇到空指针异常。 根据评论更新,增加问题。 我的测试用例包含3个步骤。第1步:从文件夹中读取xml文件。第2步:使用xml文件内容作为肥皂请求输入。第3步:将输出文件夹中第2步的响应保存为xml。
我使用groovy脚本中的方法创建了一个自定义dsl命令链。我从另一个groovy文件访问此命令链时遇到问题。是否有实现功能的方法? 我尝试过使用“evaluate”,它可以加载groovy文件,但无法执行命令链。我尝试过使用GroovyShell类,但无法调用这些方法。 我这里有一个小房间。groovy中执行“please show the cube\u root of 1000”会产生10的结
问题内容: 我如何在Java或C中使用vtd-xml解析如下的xml文件? 任何帮助,将不胜感激。 谢谢 问题答案: 我想其中有些取决于您要如何解析文件。 这是一个“非生产”示例,其中使用了一些有用的技术,包括: XPath选择(此处仅使用“ / *”) 浏览所有同级节点 通过子节点向下看 使用AutoPilot将节点属性提取到地图中 希望能帮助到你 产生以下输出: 添加带有AutoPilot循环
如何在java或C中使用vtd xml解析如下xml文件? 任何帮助都将不胜感激。 谢谢