У меня возникла проблема с извлечением значений атрибутов через E4x в javascript.Javascript E4X: Как правильно перебрать атрибут XMLList?
Предположим, что список узлов XML как следующее как XMLObject:
<node att1="value1" att2="value2" att3="value3" att4="value4">
<nodeChild><!CDATA[/* ... */]></nodeChild>
/* more node childs */
</node>
Я правильно доступ узлов (в цикле) и его узлы атрибутов с помощью attributes()
метод:
var attributes = node[n].attributes() ;
for(var n = 0 ; n < attributes.length() ; n++) {
var name = attributes[n].name() ;
var value = attributes[n].toString() ;
//.. handle the values
}
Теперь, для одного, имена и значения не возвращаются надлежащим образом (n) возвращает значение имени (n + 1), то есть значение att1
будет value2
; если я установил , значения вернутся правильно, но первое значение вернет undefined
.
Возможно, я просто плотный на этом. Итак, есть ли у кого-нибудь какие-либо указания на то, что мне не хватает?
ТИА,
FK
Я не уверен, что здесь происходит, но «имя» действительно является функцией, а не просто простой строкой? – Pointy
Да, это -E4X странно и ведет себя по-другому, как вы ожидаете от обычного объекта DOM или JS. Этот пример отлично работает для меня, за исключением того, что он не ясен, где 'n' происходит из' node [n] .attributes() '. Конечно, если '// .. обрабатывать значения' изменяет атрибуты, существует потенциальная проблема разрушительной итерации. – bobince
Вышеупомянутый псевдокод. Мое использование (функция разбора JS xml в Rhino, используемое в классе Java) намного сложнее, поэтому я отвлек эту проблему. Я должен был это сказать. Сожалею. – FK82