Jquery: отображение узлов XML на элементы HTML ID - PullRequest
3 голосов
/ 26 января 2010

никогда не легко выразить то, что сказать в названии ... но здесь мы идем ...

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

Я пытаюсь сделать следующее:

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

  2. Я хочу затем через вызов JQuery AJAX, проанализировать XML и отобразить значения узлов к значению элементов HTML ID с тем же именем узла ...

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

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

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

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

Ответы [ 4 ]

3 голосов
/ 26 января 2010

это должно помочь вам начать анализ 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 вернет значение узла xml .. (только текст)

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

$.get( 
      '/path/to/filename.xml', 
      function(){ 
                 /*runs on success, do the parsing here*/
                },
      'xml'
     ); 
2 голосов
/ 26 января 2010

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

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

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

0 голосов
/ 26 января 2010
$(xml).find('foo').each( function() {
  alert (this.text());
});
0 голосов
/ 26 января 2010

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

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

Итак, в итоге я буду иметь:

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

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

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

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

...