尝试使用Nokogiri构建XML文档时遇到一个小问题.
我想将其中一个元素称为"文本"(请参阅下面粘贴代码的最底部).通常,为了创建一个新元素,我会做类似下面的事情xml.text- 但它似乎.text是Nokogiri已经用来做其他事情的方法.因此,当我写这一行时,xml.textNokogiri并没有创建一个名为的新元素,<text>而只是将文本写成元素的内容.我怎样才能让Nokogiri真正制作一个叫做元素的元素<text>?
builder = Nokogiri::XML::Builder.new do |xml|
xml.TEI("xmlns" => "http://www.tei-c.org/ns/1.0"){
xml.teiHeader {
xml.fileDesc{
xml.titleStmt{
xml.title "Version Log for #{title}"
xml.author "Jeffrey C. Witt"
}
xml.editionStmt{
xml.edition('n' => "#{ed_no}") {
xml.date('when' => "#{newDate}")
}
}
xml.publicationStmt{
xml.publisher "#{publisher}"
xml.pubPlace "#{pubPlace}"
xml.availability("status" => "free") {
xml.p "Published under a Creative Commons Attribution ShareAlike 3.0 License"
}
xml.date("when" => "#{newDate}")
}
xml.sourceDesc {
xml.p "born digital"
}
}
}
xml.text "test"{
xml.body {
xml.p "test document
}
}
}
Run Code Online (Sandbox Code Playgroud)
Chr*_*erg 11
来自文档:
构建器通过利用method_missing来工作.不幸的是,一些方法在红宝石中定义,难以去除或有危险.例如,您可能想要创建名称为"type","class"和"id"的标签.在这种情况下,您可以使用下划线来消除方法调用中的标记名称的歧义.
所以,你要做的就是在后面添加一个下划线text,如下所示:
builder = Nokogiri::XML::Builder.new { |xml| xml.text_ "test" }
builder.to_xml
#=> "<?xml version=\"1.0\"?>\n<text>test</text>\n"
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
303 次 |
| 最近记录: |