您不显示您需要的格式,我不知道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>
还有几个其他的问题(包括http://stackoverflow.com/questions/4922867/junit-xml -format-specification-that-hudson-supports),它解决了#2需要的XML格式。 –