정미나닷컴

[XPath] XPath를 이용한 xml 파싱 본문

programming

[XPath] XPath를 이용한 xml 파싱

정미나 2010. 8. 19. 14:35
반응형
* xml 파일
  <?xml version="1.0" encoding="utf-8" ?>
- <root>
   - <item>
        <no>인덱스</no>
     - <title>
          <![CDATA[ 타이틀 ]]>
       </title>
     - <link>
          <![CDATA[ 링크주소  ]]> 
       </link>
     </item>
</root>


* 소스 파일 - javascript
<script type="text/javascript">

function loadXMLDoc(fname){
   var xmlDoc;

   //code for IE
   if(window.ActiveXObject){
      xmlDoc = new ActiveXObject("Msxml.DOMDocument"); 
   }else{
      xmlDoc = document.implementation.createDocument("","",null);
   }

    xmlDoc.async = false;
    xmlDoc.load(fname);
    return(xmlDoc);
}

var xml = loadXMLDoc("xpath_xml.jsp");
var path = "/root/item";

var title = "";
var link = "";

//code for IE
if(window.ActiveXObject){
   xml.setProperty("SelectionLanguage", "XPath");
   var nodes = xml.selectNodes(path);

   for(var i=0; i<nodes.length; i++){
      title = nodes[i].childNodes[1].childNodes[0].nodeValue;
      link = nodes[i].childNodes[2].childNodes[0].nodeValue;

      document.write("<a href='"+ link +"'>"+ title + "</a>");
   }
}else{
   var nodes = xml.evaluate(path, xml, null, XPathResult.ANY_TYPE, null);
   var result = nodes.iterateNext();

   while(result){ 
      title = result.childNodes[3].childNodes[0].nodeValue;
      link = result.childNodes[5].childNodes[0].nodeValue;

      document.write("<a href='"+ link +"'>"+ title + "</a>");
      result = nodes.iterateNext();
   }
}

</script>


* 소스 파일 - vbscript
<script type="text/vbscript">

set xmlDoc=CreateObject("Microsoft.XMLDOM")
xmlDoc.async="false"
xmlDoc.load("xpath_xml.jsp")

set nodes=xmlDoc.selectNodes("/root/item")
//set nodes=xmlDoc.selectNodes("/root/item[@no='1']") no가 1인 노드 추출
//set nodes=xmlDoc.selectNodes("/root/item[@no,'1']") no에 1이 들어가는 노드 추출

Dim i
i=0

for each x in nodes 
    title = nodes(i).selectSingleNode("title").Text
    link = nodes(i).selectSingleNode("link").Text

   document.write("<a href='"+link+"'>"+ title + "</a>")

    i=i+1
next

</script>
반응형