| 제목 | 여러분의 도움이..ㅠㅠ jquery로 무한뎁스 xml을 파싱해야하는데요.. | ||
|---|---|---|---|
| 글쓴이 | 터프키드 | 작성시각 | 2010/10/28 16:17:33 |
|
|
|||
|
보통 xml은 <item> <title>어쩌구</title> <date>어쩌수</date> </item> ... 이런식으로 규약이 정해진채로 서로 교환을 하는데.. 이번에 activeX에서 받은 xml파일을 디렉토리 구조대로 출력하는 스크립트를 짜야하는데 그 디렉토리 구조가 바로 인터넷 익스플로러의 "즐겨찾기" 입니다..ㅜㅜ jquery로 activeX에 접근해서 xml문서를 받아다가 구조를 html로 바꾸고 그 구조를 treeview 플러그인 ( http://jquery.bassistance.de/treeview/demo/ ) 으로 트리형태로 보여주게 하는데요 문제가.. xml을 파싱해서 <ul> <li></li></ul> 구조로 변경해야하는데.. folder 뎁스가 무한일수가 있어요.. 어떤 사람은 5단계까지 폴더를 만들어 정리할 수 있어서.. 딱 몇번까지만 가져올수 없고, 하위노드를 계속 탐색해야하는데.. 도데체 머리가 안돌아가요 ㅠㅠ 일단 테스트용 xml 문서는 <?xml version="1.0"?> <ROOT> <DIR name="Links"> <FILE name="웹 조각 갤러리.url">http://go.microsoft.com/fwlink/?LinkId=121315</FILE> <FILE name="추천 사이트.url">https://ieonline.microsoft.com/#ieslice</FILE> </DIR> <DIR name="Links for 대한민국"> <FILE name="e뮤지엄.url">http://go.microsoft.com/fwlink/?LinkId=142459</FILE> <FILE name="대한민국 구석구석.url">http://go.microsoft.com/fwlink/?LinkId=142460</FILE> <FILE name="대한민국 전자정부.url">http://go.microsoft.com/fwlink/?LinkId=129723</FILE> <FILE name="에듀넷.url">http://go.microsoft.com/fwlink/?LinkId=129725</FILE> <FILE name="예술로.url">http://go.microsoft.com/fwlink/?LinkId=129726</FILE> <FILE name="전자민원G4C.url">http://go.microsoft.com/fwlink/?LinkId=129724</FILE> </DIR> <DIR name="Microsoft Websites"> <DIR name="adsf"> <DIR name="basdf"> <FILE name="예술로.url">http://go.microsoft.com/fwlink/?LinkId=129726</FILE> <FILE name="전자민원G4C.url">http://go.microsoft.com/fwlink/?LinkId=129724</FILE> </DIR> <FILE name="IE 추가 기능 갤러리.url">http://go.microsoft.com/fwlink/?LinkId=50893</FILE> <FILE name="IE 추가 기능 갤러리.url">http://go.microsoft.com/fwlink/?LinkId=50893</FILE> </DI> <FILE name="IE 추가 기능 갤러리.url">http://go.microsoft.com/fwlink/?LinkId=50893</FILE> </DIR> <DIR name="Microsoft 웹 사이트"> <FILE name="IE 홈.url">http://go.microsoft.com/fwlink/?LinkId=72186</FILE> <FILE name="Microsoft Store.url">http://go.microsoft.com/fwlink/?linkid=140813</FILE> </DIR> <DIR name="MSN 웹 사이트"> <FILE name="MSN 금융.url">http://go.microsoft.com/fwlink/?LinkId=72640</FILE> <FILE name="MSN 뉴스.url">http://go.microsoft.com/fwlink/?LinkId=72636</FILE> <FILE name="MSN 스포츠.url">http://go.microsoft.com/fwlink/?LinkId=72635</FILE> <FILE name="MSN 연예.url">http://go.microsoft.com/fwlink/?LinkId=72659</FILE> <FILE name="MSN.url">http://go.microsoft.com/fwlink/?LinkId=72630</FILE> </DIR> <DIR name="Windows Live"> <FILE name="Windows Live 갤러리.url">http://go.microsoft.com/fwlink/?LinkId=70742</FILE> <FILE name="Windows Live 메일.url">http://go.microsoft.com/fwlink/?LinkId=72681</FILE> <FILE name="Windows Live 스페이스.url">http://go.microsoft.com/fwlink/?LinkId=68927</FILE> <FILE name="Windows Live 패키지 다운로드.url">http://go.microsoft.com/fwlink/?LinkId=72700</FILE> </DIR> <FILE name="▒ 컨텐츠와 함께 위디스크 ▒.url">http://www.wedisk.co.kr</FILE> <FILE name="길거리 WIFI 무선 인터넷 암호 풀기! 길에서도 인터넷을~ __ Blah, blah, blah ~~~ ★.url">http://drunken009.tistory.com/m/181</FILE> <FILE name="날씨.url">http://m.weather.naver.com/</FILE> </ROOT>이거에요 세번째 DIR을 보면 안에 또 DIR이 있고 또 그 안에 DIR이 있고요.. 이걸 하위 노드 수 관계없이 태그로 변환할 방법이 있을까요? 좀 도와주세요.. 여러분에 타이핑 하나하나가 절 살리실 수 있어요 ㅠ |
|||
| 다음글 | 10월 정모 후기 (4) | ||
| 이전글 | 정모의 날이 밝았습니다. ^^; (9) | ||
|
터프키드
/
2010/10/28 16:19:50 /
추천
0
|
|
변종원(웅파)
/
2010/10/29 18:10:29 /
추천
0
보통 재귀호출(자기 자신을 다시 호출)하는 방식으로 처리를 합니다.
디렉토리 만드는 부분을 함수화 하고 하위가 있을 경우 재귀호출해서 계속 생성하는 구조.. 직접적인 도움을 드리지 못해 죄송합니다. ^^ |
|
터프키드
/
2010/11/10 14:00:12 /
추천
0
^^ 다행히 잘 처리했습니다~
늦었지만 답변주셔서 감사해요 |
// 엑티브엑스 즐겨찾기 if($.browser.msie) { function getXmlObj(){ objMineWeb = new ActiveXObject("MineWeb.mwCtrl"); xmlStr = objMineWeb.getFav(); alert(xmlStr); //alert(xmlStr); if (window.ActiveXObject) { var doc = new ActiveXObject('Microsoft.XMLDOM'); doc.loadXML(xmlStr); return doc; } } var xml = getXmlObj(); //alert(xml); var html = ""; html += '<ul id="favoriteTree" class="filetree">'; // 디렉토리로 되어있는 것들. $(xml).find("ROOT").children("DIR").each(function(i,e){ var $entry = $(this); var folder = $entry.attr('name'); html += '<li class="closed"><span class="folder">'+folder+'</span>'; html += '<ul>'; $entry.children("FILE").each(function(i2, e2){ var $$entry = $(this); var name = $$entry.attr('name').split(".")[0]; var url = $$entry.text(); html += '<li><a class="add_sites" href="'+url+'"><span class="file">'+name+'</span></a></li>'; }); html += '</ul>'; html += '</li>'; }); html += '</ul>'; $("#favoriteSite").append(html).treeview(); $("#favoriteTree").bind("content_loaded", function(){ $("#favoriteSite").treeview(); }); }