2009-09-25 2 views
1

У меня возникли проблемы с синтаксического анализа XML с JQuery, когда есть узел с узлом опционногоJQuery вариант XML узел

<preferences><dashboard> 
<report id="si_pg_vw" order="0"> 
    <header> 
    <data> 
     <option type="reportname" value="Page View"/> 
    </data> 
    </header> 
</report> 

следующий код в поджигатель не возвращает детей

$reportElement.find("data")[0] 

однако, если я изменяю параметр на любое другое значение («option2», «test» и т. Д.), То строка выше возвращает один из них, который является правильным.

Я что-то мешаю или есть ошибка?

Благодаря

Джон

+0

Несколько вещей: Являются '' preferences' и dashboard' теги правильно закрыты в XML? Что вы назначаете переменной '$ reportElement'? Почему вы используете индексацию в результатах данных, а не итерацию по ним? –

ответ

1

Возможно, это связано с опцией HTML тег должен быть потомком выбора тега.

Убедитесь, что тип содержимого ответа является «text/xml». Вероятно, это будет инструктировать jQuery для синтаксического анализа ответа как xml, а не html, тем самым правильно распознавая тег опции.

+0

К сожалению, это происходит с сервера, а другие приложения зависят от того, что этот узел является «опцией». – John

+0

См. Мой отредактированный ответ. Я считаю, что вам нужно установить заголовок типа контента. – kgiannakakis

1
$reportElement.find("data")[0] 

не будет работать. Попробуйте

$reportElement.find("data:first") 

ИЛИ

$reportElement.find("data:eq(0)") 

и т.д.

Кроме того, вы не закрываем 'панель' и 'предпочтения' в вашем примере.

Это полный пример;

var myXML = <preferences> 
       <dashboard> 
       <report id="si_pg_vw" order="0"> 
        <header> 
         <data> 
         <option type="reportname" value="Page View"/> 
         </data> 
        </header> 
       </report> 
      </dashboard> 
      </preferences> 

myXML = jQuery(myXML); 
myXML.find('data option:first'); 
//OR 
myXML.find('data option:eq(0)'); 
//OR 
myXML.find('data option').each(function(){ window.console.log(this) }); 

и т.д.

Смежные вопросы