UPDATE :
가 여기에 트릭을 할해야 전체 X-브라우저 작업 스크립트입니다. 다시 getAttribute('attribute1')
을 인수로 대체하거나 DOM을 반환하고 나머지 부분을 처리하십시오. 이 코드는 약간 복잡해 보일 수도 있지만 (가능한 한 가벼운 클로저를 사용합니다), 매우 튼튼하고 안전하게 사용해야합니다 ... parseXML
이라는 다른 함수를 선언하지 않고이 함수를 호출하지 않는 한 parseXML
을 선언하기 전에 당신은 parse the XML을 할 수
var parseXML = (function(w,undefined)
{
'use strict';
var parser,i,ie,parsed;
ie = false;
switch (true)
{
case w.DOMParser !== undefined:
parser = new w.DOMParser();
break;
case new w.ActiveXObject("Microsoft.XMLDOM") !== undefined:
parser = new w.ActiveXObject("Microsoft.XMLDOM");
parser.async = false;
ie = true;
break;
default :
throw new Error('No parser found');
}
return function(xmlString,getTags)
{
var tags,keep = [];
if (ie === true)
{
parser.loadXML(xmlString);
parsed = parser;
}
else
{
parsed = parser.parseFromString(xmlString,'text/xml');
}
tags = parsed.getElementsByTagName(getTags);
for(i=0;i<tags.length;i++)
{
if (tags[i].getAttribute('attribute1') && tags[i].getAttribute('attribute2'))
{
keep.push(tags[i].getAttribute('attribute2'));
}
}
//optional:
keep.push(parsed);//last element of array is the full DOM
return keep;
}
})(this);
var parseResult = parseXML('<r><i attribute1="" attribute2="Ignore This"/><i attribute1="foo" attribute2="got this"/></r>','i');
alert(parseResult[0] || 'nothing');//alerts 'got this' in IE and others
:
var parser = new DOMParser();
var parsed = parser.parseFromString('<r a="1" b="2"><i v="" x="some text"/><i v="0" x="some important text"/></r>','text/xml');
var iTag = parsed.getElementsByTagName('i');
for (var i=0;i<iTag.length;i++)
{
if (iTag[i].getAttribute('v'))
{
console.log(iTag[i].getAttribute('x'));//do whatever
}
}
이 조각은 some important text
, 그리고 some text
를 기록합니다. 그게 전부입니다. 당신이 x
값을 저장하거나 반환해야 할 경우 또 다른 변수를 선언 : 그것은 항상 사건이 아니라면 이것은, x
속성이 설정됩니다 가정한다
var keep = [];//an array
//change console.log line by:
keep.push(iTag[i].getAttribute('x'));
, 추가 검사는 쉽게 그 문제를 해결할 수 있습니다. 노드 이름이 끔찍한 것을
function parseXML(xml)
{
'use strict';
var parser,keep,parsed,i,iTag;
parser = new DOMParser();
keep = [];
parsed = parser.parseFromString(xml,'text/xml');//xml is the string
iTag = parsed.getElementsByTagName('i');
for (i=0;i<iTag.length;i++)
{
if (iTag[i].getAttribute('v') && iTag[i].getAttribute('x'))
{
keep.push(iTag[i].getAttribute('x'));
}
}
return keep;//return array
}
:처럼 전체 코드는 모양 D – Andreas
그러나 바로 문제 shouldn't ??? – user1495475
아니, 그냥 읽고 끔찍한 이해 ^^ – Andreas