자바 스크립트에서 E4x를 통해 속성 값을 검색하는 데 문제가 있습니다.Javascript E4X : 속성 XMLList를 올바르게 반복 처리하려면 어떻게해야합니까?
하여되는 XMLObject로 다음과 같은 XML 노드 목록 가정 : 내가 제대로 노드를 액세스
<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
}
을 이제는 이름과 값이 적절히 반환되지 않습니다. value (n)은 name (n + 1)의 값을 반환합니다. 즉 att1
의 값은 value2
입니다. var value = attributes[ (n+1) ].toString()
을 설정하면 값이 올바르게 반환되지만 첫 번째 값은 undefined
을 반환합니다.
가능합니다. 저는이 부분에 밀도가 있습니다. 그래서, 내가 누락 된 부분에 대한 조언을 누군가가 가지고 있습니까?
TIA,
FK
나는 여기서 무슨 일이 일어나고 있는지 잘 모르겠지만, 단순한 문자열이 아닌 "이름"은 실제로 함수입니까? – Pointy
예, 그것은 -E4X가 이상하고 정상적인 DOM 또는 JS 객체를 기대하는 방법과 다르게 동작합니다. 이 예제는 나를 위해 잘 작동한다.'n '이'node [n] .attributes()'에서 어디서 왔는지 분명하지 않다. 물론 '// .. 값을 처리하면'속성이 변경되면 잠재적으로 파괴적인 반복 문제가 발생할 수 있습니다. – bobince
위 코드는 의사 코드입니다. 내 유스 케이스 (자바 클래스에서 사용되는 Rhino의 JS xml 파싱 함수)는 훨씬 더 복잡하므로이 문제를 추상화했다. 나는 그것을 말해야했다. 죄송합니다. – FK82