티스토리 뷰

Language/AS3

XML 검색

MiniNeko 2015. 11. 29. 04:17

참고 : http://airdev.tistory.com/54

= 액션스크립트[ActionScript] 3.0 XML =

var xml:XML = 
 <root>
  <node label="nodeLabel1">
   <sub>sub1</sub>
  </node>
  <node label="nodeLabel2">
   node1
   <sub>sub2</sub>
  </node>
  <main>
   <node label="nodeLabel3">
    mainNode1
    <sub>sub3</sub>
   </node>
   <sub>sub2</sub>
  </main>
 </root>;

위 XML을 다양하게 검색하는 방법을 소개합니다..

.. 연산자를 이용하면 모든 노드를 검사해서 해당 노드를 찾습니다..
var xmllist:XMLList = xml..node;
trace(xmllist.toXMLString());
/*
< node label="nodeLabel1">
  <sub>sub1</sub>
< /node>
< node label="nodeLabel2">
  node1
  <sub>sub2</sub>
< /node>
< node label="nodeLabel3"> //<main>내의 <node>까지 검색
  mainNode1
  <sub>sub3</sub>
< /node>
*/

찾아낸 XMLList의 부모를 접근할 수도 있습니다..parent()는 메소드입니다..괄호 주의..
trace(XML(xmllist[2]).parent().toXMLString());
/*
< main>
  <node label="nodeLabel3">
    mainNode1
    <sub>sub3</sub>
  </node>
  <sub>sub2</sub>
< /main>
*/

속성을 검사하는 방법은 아래와 같습니다.. == 뿐만 아니라 < > <= >= 과 같은 비교연산자도 사용할 수 있습니다..
trace(xmllist.(@label=="nodeLabel2").toXMLString());
/*
< node label="nodeLabel2"> //속성이 nodeLabel2인 노드를 찾았습니다.
  node1
  <sub>sub2</sub>
< /node>
*/

속성뿐만 아니라 노드의 값도 비교가 가능합니다..
trace(xmllist.(sub=="sub3").toXMLString());
/*
< node label="nodeLabel3">
  mainNode1
  <sub>sub3</sub> //sub 노드의 값이 sub3인 노드를 찾았습니다.
< /node>
*/

값을 변경하거나 저장할 수도 있습니다..
xmllist.(sub=="sub3").@label = "changeLabel";
xmllist.(sub=="sub3").@label2 = "changeLabel2";
trace(xmllist.(sub=="sub3").toXMLString());
/*
< node label="changeLabel" label2="changeLabel2">
  mainNode1
  <sub>sub3</sub>
< /node>
*/ 

Total
Today
Yesterday
최근에 올라온 글
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31