10.9.4 단순화된 Xml 접근(Simplified Xml access)
10.9.4 단순화된 Xml 접근(Simplified Xml access)
haxe.xml.Access API는 가장 일반적인 Xml 메서드에 점 구문 접근을 제공하기 위해 존재합니다.
Haxe 4부터 이 클래스는 haxe.xml.Access로 이름지어졌습니다. Haxe 3에서는 haxe.xml.Fast로 알려져 있었습니다.
XML Access 사용 예:
// 일부 XML 데이터 파싱
var xml = Xml.parse("
<phonebook>
<phone name="John">
0000
111
</phone>
</phonebook>");
// Access를 위해 Xml 감싸기
var access = new haxe.xml.Access(xml.firstElement());
// 속성 접근
trace(access.att.name); // 속성 "name"
if (access.has.age) trace( access.att.age ); // 선택적 속성
// "phone" 자식 접근, 이것도 haxe.xml.Access로 감싸짐
var phone = access.node.phone;
// 숫자들 반복
for (p in phone.nodes.number) {
trace(p.innerData);
}
이 코드는 모든 플랫폼에서 동일하게 작동합니다.
접근자(Accessors)
Access API와 함께 사용할 수 있는 다양한 접근자가 있습니다:
.name현재 요소의 이름을 반환합니다(Xml.nodeName과 동일)..x현재 대응하는Xml노드를 반환합니다..att.<name>주어진 속성에 접근합니다. 속성이 존재하지 않으면 예외가 발생합니다..has.<name>속성의 존재를 확인합니다..elements모든 하위 요소의 목록(Xml.Element타입의 노드)..node.<name>주어진 이름을 가진 첫 번째 하위 요소에 접근합니다. 요소가 존재하지 않으면 예외가 발생합니다..nodes.<name>주어진 이름을 가진 요소들의 List를 반환합니다..hasNode.<name>주어진 이름을 가진 하위 노드의 존재를 확인합니다..innerData노드의 내부PCDATA또는CDATA를 반환합니다. 데이터가 없거나 데이터만 있지 않고 다른 노드도 있으면 예외가 발생합니다..innerHTML현재 것을 제외한 모든 하위 노드로 만든 XML 문자열을 반환합니다.
자체 닫힌 노드(Self-closed nodes)
자체 닫힌 노드는 "일반" 노드처럼 접근할 수 없다는 점에 유의하세요. 예를 들어 다음 XML이 주어지면:
var xml = Xml.parse("<root><myNode1>some data</myNode1><myNode2 /></root>");
var access = new haxe.xml.Access(xml.firstElement());
var myNode1Value = access.node.myNode1.innerData;
// 문제 없음
var myNode2Value = access.node.myNode2.innerData;
// 오류, 예외가 발생함!
XML에 자체 닫힌 노드가 있을 수 있다면, 기본값이 있는 대안으로 폴백하기 전에 hasNode.innerData를 확인하세요.
var myNode2Value = access.node.myNode2.hasNode.innerData ? access.node.myNode2.innerData : null;