На мой взгляд, у вас есть три варианта:
1.Вы используете пространства имен
Затем вы можете объявить пространство имен и использовать метод xml[]
:
builder = Nokogiri::XML::Builder.new do |xml|
xml.root('xmlns:node' => 'http://example.com') do
xml['node'].name
end
end
Вывод:
<root xmlns:node="http://example.com">
<node:name/>
</root>
Этот метод немногохитрее, если вы хотите добавить пространство имен к корневому элементу, см. Создание XML-документа с корневым элементом с пространством имен с помощью Nokogiri builder .
2.Вы не используете пространства имен, но хотите / нуждаетесь в имени элемента с двоеточием
В этом случае вам необходимо отправить метод с именем "node: name" в блок xml
параметр.Вы можете сделать это с помощью обычного метода ruby send
:
builder = Nokogiri::XML::Builder.new do |xml|
xml.root do
xml.send 'node:name'
end
end
и выдает:
<?xml version="1.0"?>
<root>
<node:name/>
</root>
3.Вы не уверены, что это за бизнес «пространства имен», и все о
. В этом случае вам лучше всего избегать использования двоеточий в именах элементов.Альтернативой может быть использование -
.Если вы сделали это, вам нужно будет использовать метод 2 выше, но с xml.send 'node-name'
.Я включил эту опцию, потому что вы не упоминаете пространства имен в своем вопросе, и в них используются двоеточия (как показано в методе 1), поэтому вам безопаснее не использовать двоеточия, чтобы избежать каких-либо проблем в будущем.