Jquery: сопоставление узлов XML с элементами HTML ID


Никогда не бывает легко инкапсулировать то, что нужно сказать в названии... но вот мы и пришли...

Я понимаю, что, вероятно, вижу прямо мимо очевидного и, возможно, встроенную функцию JQuery.

То, что я пытаюсь сделать, это:

  1. Иметь XML-файл (локально или через сервер), содержащий узлы, которые имеют свои имена узлов то есть как имена идентификаторов скажем текстового поля в HTML то есть

  2. Я хочу, чтобы затем с помощью jQuery AJAX вызова, проанализировать XML и сопоставить значения узлы значение идентификатор HTML-элементов с одинаковым именем узла...

Я сразу понимаю, что есть а) вероятно Плагины, Б) возможно лучшие концепции, но мне нужно только сопоставить основные элементы HTML.. и на самом деле я мог бы технически иметь некоторые более продвинутые функции для заполнения, скажем, комбо-боксов, переключателей и т. д....

Просто какие-то идеи о пути, по которому нужно идти? или если есть простой плагин JQuery, чтобы сделать это?

P. S: Я не был в шаблонах как таковых, потому что даже хотя я понимаю силу, скажем, jTemplates, мне на самом деле не нужно ничего столь сложного/гибкого, как это...

Заранее спасибо!!

4 3

4 ответа:

Попробуйте это:

$.get ('/path/to/xml', function (data)
{
    $(data).children ().each (function ()
    {
        $('#' + this.nodeName).val ($(this).text());
    });
})

Предполагает только 1 уровень вложенности в XML.

Это должно помочь вам начать разбор xml..

var xml = '<root><text1>i am in text1</text1><text2>i am in text2</text2></root>';
$(xml)
      .children()
      .each(
            function(){
                       alert(this.nodeName + ':' + $(this).text());
                      }
           );

NodeName-это имя тега в xml, которое вы будете использовать в качестве идентификатора для html .. метод jQuery text возвращает значение xml-узла .. (только текст)

Для загрузки xml-файла используйте

$.get( 
      '/path/to/filename.xml', 
      function(){ 
                 /*runs on success, do the parsing here*/
                },
      'xml'
     ); 

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

Опять же, я понимаю, что есть шаблонные движки, но мой следующий шаг-построить немного больше сложности, чтобы иметь возможность сказать, заполнить поле со списком, переключатель и т. д.. только основы HTML.. потому что я использую компоненты DHTMLX , чтобы делать любые причудливые вещи.. в основном потому, что они, кажется, имеют самые простые для понимания виджеты javascript, которые я нашел.. Я знаю, что ExtJS догоняют лучшие docco, проще API и т.д..

Итак, вкратце, у меня будет:

  1. поля в базе данных с одинаковыми именами во всей моей системе.. так что если поле базы данных называется firstname, то HTML-элемент будет называться firstname
  2. в моем XML, который я создаю из базы данных, я добавлю атрибуты, такие как "Тип элемента" это будет текст, радио, комбо или что-то еще, так что я знаю, как заполнить значения.
  3. тогда javascript/JQuery может делать то, что ему нужно для отображения данные..

Основная причина всего этого заключается в том, что мой партнер может просто спроектировать страницу/макет как чистый HTML, не беспокоясь о XSLT/шаблонах... и данные простые заселяются...

Я уверен, что там должен быть какой-то "движок/плагин".. но пока я буду работать над этим...

Еще раз спасибо...

$(xml).find('foo').each( function() {
  alert (this.text());
});