o 먼저는 jQuery 로 XML 데이타 가져오는 방법
http://www.xgenesis.org/webProgramming/5927995
$.ajax({
type: "get", // post
url : "sample.xml",
dataType : "xml",
success: function(xml) {
$(xml).find("data").each(function(){ // $(xml) 은 Ajax 리턴값의 Root Tag. each() 는 find 결과가 배열일 경우에 대한 방비
var title = $(this).find("title").text(); // attr('AttrName') 속성값 추출
var linkUrl = $(this).find("link_url").text();
var linkTarget = $(this).find("link_target").text();
var link = "<a href='"+linkUrl+"' target='"+linkTarget+"'>"+title+"<a>";
alert(link);
});
}
});
http://www.jquerykorea.net/xe/index.php?mid=document&CT=All&document_srl=7608
jQuery.parseXML(data)
o 다음은 Java 로 XML 데이타 다루는 방법
1. FileInputStream 으로 OS 상의 절대경로에서 XML 파일을 읽어서,
2. DocumentBuilder 로 파싱하여 DOM 구조를 만들고,
3. Document 에 담아 NodeList 에 개별적으로 분류
XML 은 요렇게 생겼고.. day 가 반복되는 구조.
<?xml version="1.0" encoding="UTF-8" ?>
<xmlContent>
<days>
<day><aa>...</aa><bb>...</bb>...</day>
<day>...</day>
<day>...</day>
<day>...</day>
...
<day>...</day>
</days></xmlContent>
XmlInfo 는 요렇게 생김.. XML 파일이 OS 상의 절대경로에서 어떻게 기술되는지 체크
public class XmlInfo{
String filePath; // OS 상에서의 경로
String fileName; // OS 상에서의 파일명
...
}
XML 을 DOM 구조로 메모리에 파싱하여 올리는 Java
public ArrayList getXML(XmlInfo info){
List list = null;
FileInputStream fis = null;
DocumentBuilder db = null;
Document d = null;
try{
list = new ArrayList(); // DOM 에서 필요한 정보만 추출할 목적으로 생성
fis = new FileInputStream(info.getFilePath()+info.getFileName());
db = DocumentBuilderFactory.newInstance().newDocumentBuilder();
d = db.parse(fis,"UTF-8"); // 문자셋에 유의, XML 에 기술된 문자셋으로 세팅
NodeList days = d.getElementsByTagName("day"); // day 는 반복되는 태그 이름
for(int i=0,s=days.size(); i<s; i++) {
Map row = new HashMap();
NodeList daysNL = day.item(i).getChildNodes(); // xmlContent.days.day 태그 하위에 존재하는 태그들 목록
String aa = daysNL.item(1).getFirstChild().getNodeValue(); // xmlContent.days.day 태그 하위에 존재하는 태그값
String bb = daysNL.item(3).getFirstChild().getNodeValue(); // 1, 3, 5, 6, .. 홀수배
...
row.put("aa", aa);
row.put("bb", bb);
...
list.add(row);
}
}catch(Exception e){
StringBuffer sbLog = new StringBuffer(); // FileAccess 를 줄이기 위해서 한번에 Write 하는 방식으로 전환, 다른 내용들과 섞이는 일도 방지..?
sbLog.append("\n");
sbLog.append("---.getXML()\n");
sbLog.append("---.Exception:" +e.toString()+ "..\n");
sbLog.append("---.info :" +info+ "..\n");
System.out.println(sbLog); // println 이기 때문에 맨 뒤에는 sbLog.append("\n"); 불필요.
}finally{
if(fis !=null) try{ fis.close(); }catch(Exception e){}finally{ fis =null; }
}
return list; // 사용하는 쪽에서 다 사용한 다음엔 list 에 담긴 Map 정보와 list 등을 모두 clear() 해 주세요..
return list; // 사용하는 쪽에서 다 사용한 다음엔 list 에 담긴 Map 정보와 list 등을 모두 clear() 해 주세요..
'Server Oriented > Java & JSP' 카테고리의 다른 글
request 개체의 getRequestURL() 과 getRequestURI() 의 차이 (0) | 2012.02.27 |
---|---|
URLDecoder: Illegal hex characters in escape (%) pattern (0) | 2012.01.31 |
JSP 에서 request 개체의 getRemoteHost() 메소드는 속도가 상대적으로 느리네요.. (0) | 2011.12.19 |
세션에 저장된 값을 String 에 담는 방법 (0) | 2011.11.02 |
외부 URL (XML, HTML, JSON, JSONP 등등) 읽어오기, 자바스크립트/Java (0) | 2011.11.01 |