Создание XML-документа с корневым элементом namespaced с разработчиком Nokogiri

В первую очередь, спасибо за ответы! 9 общих ответов. Спасибо.

Плохие новости: все ответы имели некоторые причуды или не работали совершенно верно (или вообще). Я добавил комментарий к каждому из Ваших сообщений.

Хорошие новости: я нашел способ заставить его работать. Это решение довольно просто и, кажется, работает во всех сценариях (mousing вниз, выбирая текст, снабжая вкладками фокус, и т.д.)

bool alreadyFocused;

...

textBox1.GotFocus += textBox1_GotFocus;
textBox1.MouseUp += textBox1_MouseUp;
textBox1.Leave += textBox1_Leave;

...

void textBox1_Leave(object sender, EventArgs e)
{
    alreadyFocused = false;
}


void textBox1_GotFocus(object sender, EventArgs e)
{
    // Select all text only if the mouse isn't down.
    // This makes tabbing to the textbox give focus.
    if (MouseButtons == MouseButtons.None)
    {
        this.textBox1.SelectAll();
        alreadyFocused = true;
    }
}

void textBox1_MouseUp(object sender, MouseEventArgs e)
{
    // Web browsers like Google Chrome select the text on mouse up.
    // They only do it if the textbox isn't already focused,
    // and if the user hasn't selected all text.
    if (!alreadyFocused && this.textBox1.SelectionLength == 0)
    {
        alreadyFocused = true;
        this.textBox1.SelectAll();
    }
}

, Насколько я могу сказать, это заставляет текстовое поле вести себя точно как строка поиска веб-браузера.

, Надо надеяться, это помогает следующему парню, который пытается решить эту обманчиво простую проблему.

Еще раз спасибо, парни, для всех Ваших ответов, которые помогли привести меня к корректному пути.

13
задан Luke Francl 1 December 2009 в 22:35
поделиться

1 ответ

require 'rubygems'
require 'nokogiri'

puts Nokogiri::XML::Builder.new { |xml| 
  xml.root("xmlns:foo"=>"url") {
    xml.parent.namespace = xml.parent.namespace_definitions.find{|ns|ns.prefix=="foo"}
    xml['foo'].child
  }
}.to_xml

Вы не можете использовать xml ['foo'] до определения пространства имен, т.е. перед тем, как передать его в качестве аргумента корневому узлу. Таким образом, приведенный выше код добавляет пространство имен постфактум к корневому узлу.

15
ответ дан 1 December 2019 в 21:52
поделиться
Другие вопросы по тегам:

Похожие вопросы: