- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我被分配了一项与 Ruby 相关的任务,但由于我是新手,我正在互联网上搜索合适的解决方案来解决它:
有什么想法吗?!
我在 Internet 上到处查找并找到了信息,但仍然不清楚如何解决这个问题。
是否有任何 Ruby 库可以使这更容易?有没有人处理过这样的事情?
最佳答案
你没有显示你需要的格式,我不知道 Jenkins 需要什么,但是创建 XML 很容易。不幸的是,你想要的东西需要一本书或几篇文章,这超出了 Stack Overflow 的范围。虽然基本上...
您可以使用模板系统,例如 ERB为整个 XML 文档创建模板的位置,或 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::Builder:
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>
关于ruby - 如何将测试报告日志文件转换为 Jenkins Junit XML 文件格式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13862554/
我是一名优秀的程序员,十分优秀!