2012-12-13 38 views
2

我被分配一个任务做了Ruby,但由于我是新来这,我搜索在互联网上,为妥善解决来解决这个问题:如何将测试报告日志文件转换为Jenkins Junit XML文件格式?

  1. 我的日志文件的列表网页中的报告实际分为合格或不合格。
  2. 我需要将日志文件转换成与Jenkins Junit XML文件格式兼容的格式。
  3. 所有内容,从日志到XML的内容都必须用Ruby编写。

有什么想法?

我看遍了整个互联网,发现信息,但仍然没有明确的想法如何解决这个问题。

是否有任何Ruby库使这更容易? 有没有人处理过这样的事情?

+0

还有几个其他的问题(包括http://stackoverflow.com/questions/4922867/junit-xml -format-specification-that-hudson-supports),它解决了#2需要的XML格式。 –

回答

1

您不显示您需要的格式,我不知道Jenkins需要什么,但创建XML非常简单。不幸的是,你想要的只是一本书或者几篇文章,这些超出了Stack Overflow的范围。基本上,虽然...

您可以使用模板系统,在那里像你为你的整个XML文档模板ERB,或Nokogiri::Builder可以用来生成XML,或者你可以做到这一点的老同学,并使用简单的字符串插值创建你的XML。

一个系统日志文件通常结构相当好,至少在前几个字段中,后跟自由格式文本,这是各种命令的输出。 Apache的日志文件与文本列相似,后面跟着一些自由形式,但易于解析的文本。这里和那里有宝石,以及关于如何解析日志的教程,所以搜索一下,你会发现一些东西。这个想法是你想要将每一行读入分解为XML节点的文本。

一旦你有了你的领域,你可以将它们替换成模板,或者让Ruby将变量插入到字符串中,或​​者使用Builder在标签之间添加文本。

这不是很难,但要完成几项小任务。

使用字符串插值,如果你想XML这样的:

<xml> 
    <tag1> 
    <tag2>some text</tag2> 
    <tag2>some more text</tag2> 
    </tag1> 
</xml> 

你可以创建它想:

var1 = "some text" 
var2 = "some more text" 
xml = %Q{ 
<xml> 
    <tag1> 
    <tag2>#{var1}</tag2> 
    <tag2>#{var2}</tag2> 
    </tag1> 
</xml> 
} 
puts xml 

同样,如果你想使用ERB:

require 'erb' 

var1 = "some text" 
var2 = "some more text" 

template = ERB.new <<-EOF 
<xml> 
    <tag1> 
    <tag2><%= var1 %></tag2> 
    <tag2><%= var2 %></tag2> 
    </tag1> 
</xml> 
EOF 
puts template.result(binding) 

哪些输出:

<xml> 
    <tag1> 
    <tag2>some text</tag2> 
    <tag2>some more text</tag2> 
    </tag1> 
</xml> 

或者,使用引入nokogiri ::生成器:

require 'nokogiri' 

var1 = "some text" 
var2 = "some more text" 
builder = Nokogiri::XML::Builder.new do |node| 
    node.xml { 
    node.tag1 { 
     [var1, var2].each do |t| 
     node.tag2(t) 
     end 
    } 
    } 
end 
puts builder.to_xml 

,输出:

<?xml version="1.0"?> 
<xml> 
    <tag1> 
    <tag2>some text</tag2> 
    <tag2>some more text</tag2> 
    </tag1> 
</xml> 
+0

谢谢你,无论如何,你已经与一些“起始提示”和建议宝贵!!!!!! :) – sc1789

相关问题