AS3AS3 : 일치하는 경우 XPath는 XMLList 대신 XMLNode를 반환합니다.
XML 파일을 기반으로 그림을 동적으로로드하려고합니다. Im이 붙어있는 문제는 제공된 식별자에서 발견 된 노드를 반환해야하는 함수입니다. 다음 코드
function getStudyById(id:String):XMLNode{
var xl:XMLList = xml.bacase.(@name==id); // xml is a global variable
return xl.children()[0]; // xl[0] does not work either
// return (xl.length()>0) ? xl[0] : null;
}
XML에서와 마찬가지로 은 다음과 같이 간다 : XML이로드 된 후
<root>
<bacase name="a" />
<bacase name="b" />
</root>
이 질문을 예상하고, 모두는 XML 로더의 COMPLETE 이벤트에서 이루어집니다.
이제 문제는 XMLList가 비어있는 것처럼 보이고 XML이 올바르게 채워지고 식별자가 노드 중 하나와 확실히 일치한다는 것입니다. 쿼리 된 노드를 복제 할 때 두 노드를 포함하는 것으로 올바르게 추적됩니다. 내 생각에, 일치하는 항목이 하나만있는 경우 XMLList가 만들어지지 않으며 XMLNode 데이터 형식의 데이터가 결과에 포함됩니다.
누구나 확인할 수 있습니까? 그렇다면 쿼리가 항상 XMLList 형식을 반환하도록하는 방법이 있습니까?
감사
네, 확실히, 나는 반환 형식으로하는 XMLNode을 사용하지만, 함수 내에서 나는 XPath 쿼리의 결과를 저장하는의 XMLList를 선언했다. 자, 스 니펫이 작동합니다. 감사합니다.하지만 방어 프로그래밍을 목표로하고 쿼리가 결과를 반환하는지 먼저 확인하고 싶습니다. 먼저 0 번째 자식을 참조하십시오. 쿼리가 단일 항목을 찾으면 XMLList가 만들어지지 않는다는 것이 매우 혼란 스럽습니다. – user776686
** XMLNode **는 AS3 및 XMLDocument와 함께 사용하기 위해 배제됩니다. 'trace (xml.bacase. (@ name == "a"). length());'나를 위해 ** 1 **을 반환합니다. 함수 내에서 또는 함수 결과로 추적을 수행 했습니까? – DanielB
내 대답을 약간 편집했습니다. XMLNode는 사용하지 말아야한다. – DanielB