CacheDB를 이용하여 XML 문서를 저장하고 그 문서의 내용을 File이나 Stream으로 읽어들여 DOM구조로 검색하는 예제를 만들어 보자.
가령 다음과 같은 xml 문서가 있다고 하자.
<xml>
<table border="0" bgcolor="white" cellspacing="0" cellpadding="0" width="98%" align="center">
<tr height="40">
<td colspan="7" bgcolor="white" align="right">
<a href="roster_active.jsp?c_id=ana">Active Roster</a>
|
<span class="grey">40-Man Roster</span>
|
<a href="roster_nri.jsp?c_id=ana">Non-Roster Invitees</a>
|
<a href="/team/depth_chart/index.jsp?c_id=ana">Depth Chart</a>
</td>
<td bgcolor="white"></td>
</tr>
</table>
</xml>
그러면, 아래와 같은 명령어로 해당 내용을 DOM 모델로 옮겨 내용을 볼 수가 있다.
Set tSC=##class(%XML.XPATH.Document).CreateFromFile("C:\temp\cut.xml",.tDoc)
Set tSC=tDoc.EvaluateExpression("/*","tr",.tRes)
Do ##class(%XML.XPATH.Document).ExampleDisplayResults(tRes)
위에서 가장 중요한 부분이 두번째 줄에 EvaluateExpression 부분인데, 여기서 첫번째 파라미터는 가장 상위 태그 아래에서 부터 찾겠다는 뜻이고, 두번째 "tr"은 "tr"태그를 만나면 그 내용들을 각각 ListOfObject에 넣어서 하나의 tRes에 담겠다는 것이다.
이때, 한가지 주의할 것은, 최상위 태그는무시되므로, 최상위 태그부터 의미있는 태그를 사용하지 않도록 유의해야 한다.
가령, 최상위 태그를 <xml>태그부터가 아니라 <table> 태그부터 썼다면, "table"로는 찾아도 아무것도 안나오고 <tr>태그부터 찾아야 내용이 나온다는 것이다.
|