您不顯示您需要的格式,我不知道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格式。 –