【问题标题】:How to specify where to save string in file如何指定将字符串保存在文件中的位置
【发布时间】:2017-09-27 07:12:41
【问题描述】:

如何将字符串保存到文件以指定位置?我使用path << 'string' 保存,但它在文件末尾给出。在 xml(path) 文件的目标位置有 </databaseChangeLog>。我想在那个词出现之前保存到文件中。

有java解决方案click,但是是静态行。我的文件将是动态的,我不知道它会是什么。

def add_to_version() {
   def path = new File('C:/groovy/version-1.xml')       
   def branchId = "Promt"
   def lineCount = 0

  def count = path.eachLine { line ->        
    if(line.contains('<include file="' + branchId + '/' + branchId + '.xml" ')){
        wordCount++             
    }else if(lineCount == 1 ){
        println "package is there"
    }
 }
  if(lineCount == 0){
    path << '<include file="' + branchId + '/' + branchId + '.xml" ' + 'relativeToChangelogFile="true"/>'    
  }
} 

上面的代码就是这样做的: 我想得到这样的xml:

【问题讨论】:

  • 请修改您的问题并提供文件的示例内容以及修改后的内容。一般来说:您必须读取内存中的完整文件,更改加载的数据并将其写回文件。在 groovy 中,您可以使用 xmlparser(或 xmlslurper)来读取和操作 xml。
  • 我添加了我的 xml 文件和我想要的 :) 查看 xmlparser...

标签: file groovy


【解决方案1】:

你可以像这样使用 xml 解析器:

def add_to_version(String branchId) {
   def path = new File('C:/groovy/version-1.xml')       
   def xml = new XmlParser().parse(path)
   xml.appendNode("include", [
      file:"${branchId}/${branchId}.xml",
      relativeToChangelogFile:"true"
   ])
   groovy.xml.XmlUtil.serialize(xml, path.newOutputStream())
} 

此变体不会保留 xml 格式和 cmets

然而 xml 将是有效的

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-05-11
    • 2022-10-31
    • 1970-01-01
    • 1970-01-01
    • 2011-07-15
    • 2020-06-14
    • 2013-05-29
    相关资源
    最近更新 更多