0

这是我的代码:

require 'builder'

def initXML(builder)
    builder.instruct!
    builder.results(:result => 'result'){}
end 
def writeXML(builder,name,hello)    
    builder.test(:name => name){
        builder.hello hello
        }
end 
builder = Builder::XmlMarkup.new(:target=> STDOUT, :indent=>4)
initXML(builder)
writeXML(builder,'name1','hello1')
writeXML(builder,'name2','hello2')

执行我得到这个 XML:

<?xml version="1.0" encoding="UTF-8"?>
<results result="result">
</results>
<test name="name1">
    <hello>hello1</hello>
</test>
<test name="name2">
    <hello>hello2</hello>
</test>

但我想要</results>文件末尾的结束标签。有办法在<results>节点内部写入吗?或者移动</results>到文件末尾?使用Nokogiri更好吗?还是手动生成我的 XML 更好?我正在尝试将它与 Watir 单元测试一起使用,我可以用它来将我的结果写入 XML 文件吗?

(更新)这就是我想要的 XML:

    <?xml version="1.0" encoding="UTF-8"?>
    <results result="result">    
    <test name="name1">
        <hello>hello1</hello>
    </test>
    <test name="name2">
        <hello>hello2</hello>
    </test>
    </results>

谢谢。

4

1 回答 1

0

它正在准确地写出您要告诉它的内容。

将一个块传递给initXMLinit_xml在惯用的 Ruby,IMO 中)并执行它。但我不会这样称呼它init_xml,因为您实际上在做的是包装 XML 内容。

我不确定您要完成什么;使用普通的构建器语义很容易做到这一点。如果您想从方法返回 XML 节点,可以考虑将当前节点传递给方法。如果不确切知道您要做什么,就很难提出建议。

于 2012-07-27T20:03:15.153 回答