все! У меня есть некоторые проблемы с доступом к свойствам узла XML с использованием Javascript.
Узел XML, в частности, выглядит следующим образом:
<List DocTemplateUrl="" DefaultViewUrl="/Lists/Announcements/AllItems.aspx" MobileDefaultViewUrl="" ID="{blahblahblahblah}" ... />
Сам узел не имеет "данных", содержащихся в его тегах; все данные, которые он содержит, являются действительными модификаторами тега List.
Ссылка Javascript на XML DOM содержит мало информации о том, как получить доступ к модификаторам тегов узла; все методы и свойства в ссылке на DOM относятся к дочерним узлам и способам доступа к содержимому узла. Конечно, это имеет смысл, потому что XML должен быть правильно сформированным и красивым, но те из вас, кто знает, откуда появился этот фрагмент XML, уже смеются, потому что этот ужасно неинтуитивный XML напрямую выводится из API веб-служб Microsoft SharePoint. :)
Во всяком случае, это не главное. Если кто-нибудь знает, как получить доступ к свойствам узла XML с помощью XML DOM Javascript, я был бы очень признателен за помощь. : D
Редактировать: Проблема может быть где-то в другом. Я имел в виду атрибуты, а не свойства; это помогло куче. Тем не менее, это все еще говорит мне, что все свойства и методы узла XML DOM не определены; Я думаю, что реальная ссылка, которую я использую для доступа к методам, не определена. Вот код, который я использую для его генерации:
var xmlDoc = $.parseXML(xml);
$(xmlDoc).find('List').each (
function ()
{
var id = $(this).attributes.getNamedItem("ID").value;
alert(id);
});
Где "xml" содержит приведенный выше фрагмент списка и является прямым выводом XML из веб-служб SharePoint.
Я предполагал, что этот код найдет все узлы с типом «Список» и проведет их по ним; это неправильно?
Редактировать: Решение найдено. Очевидно, что когда вы используете JQuery для инкапсуляции узла DOM Javascript XML, $ (this) НЕ дает вам элемент DOM, а вместо этого дает вам объект JQuery, который содержит элемент DOM. Есть два способа обойти это, учитывая код, который я использовал выше:
var id = $ (this) .attr ('ID'); // Это способ JQuery разрешить вам доступ к атрибутам внутри инкапсулированного узла XML - attr () НЕ является частью стандартного XML DOM Javascript, поскольку $ (this) НЕ является элементом XML DOM.
var id = $ (this) .get (0) .attributes.getNamedItem ("ID"). Value; // Это способ Javascript. Здесь мы вызываем get (0) для возврата фактического узла XML DOM из инкапсулированного объекта JQuery; после этого мы можем вызывать любые методы Javascript XML DOM, которые нам нужны. Я использую этот метод, потому что я знаю Javascript XML DOM, и я бы предпочел использовать JQuery как можно меньше за пределами генерации GUI.
Надеюсь, это поможет тому, кто столкнется с подобной проблемой. :)
(Да, и атрибуты против свойств. Полезно знать.: D)