보물창고/Programming2011.08.22 16:39







xml문서를 파일에서 읽어오는 방법과 웹페이지로 읽어 오는 방법 모두 구현되어 있습니다



java 소스 입니다 

import java.io.BufferedReader;
import java.io.File;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.URL;
import java.net.URLConnection;

import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.SAXParser;
import javax.xml.parsers.SAXParserFactory;

import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import org.xml.sax.InputSource;
import org.xml.sax.XMLReader;

public class Db2ConnectGetContentsXml {
	public static void main(String[] args)
	{
		try {
/*
			//파일 입출력 용
			File file = new File("http:/파일 위치/my_test/mySampleServlet2?tn=neck_cold");
			DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
			DocumentBuilder builder = factory.newDocumentBuilder();
			Document doc = builder.parse(file);
			doc.getDocumentElement().normalize();
*/
			String tableName = "neck_cold";
			//url입출력용
			URL url  = new URL("http://주소/my_test/mySampleServlet2?tn="+tableName);
            SAXParserFactory parserModel = SAXParserFactory.newInstance();
            SAXParser concreteParser   = parserModel.newSAXParser();
            XMLReader myReader    = concreteParser.getXMLReader();
            myReader.parse(new InputSource(url.openStream()));
            DocumentBuilderFactory factory1 = DocumentBuilderFactory.newInstance();
			DocumentBuilder builder2 = factory1.newDocumentBuilder();
			Document doc3 = builder2.parse(new InputSource(url.openStream()));
            
            
			
			System.out.println("Root element " + doc3.getDocumentElement().getNodeName());

			NodeList headline_node_list = doc3.getElementsByTagName("데이터");
			Node headline_node = headline_node_list.item(0);
			if (headline_node.getNodeType() == Node.ELEMENT_NODE) {
				Element headline_element = (Element) headline_node;

				NodeList news_node_list = headline_element.getElementsByTagName("테이블");
				for (int j = 0; j < news_node_list.getLength(); j++) {
					Node news_node = news_node_list.item(j);
					if (news_node.getNodeType() == Node.ELEMENT_NODE) {
						Element news_element = (Element) news_node;

						NodeList id_node_list0 = news_element.getElementsByTagName("글번호");
						Node id_node0 = id_node_list0.item(0);
						System.out.println(id_node0.getNodeName() + "  : " + id_node0.getTextContent());

						NodeList id_node_list = news_element.getElementsByTagName("본문");
						Node id_node = id_node_list.item(0);
						System.out.println(id_node.getNodeName() + "  : " + id_node.getTextContent());

						NodeList id_node_list1 = news_element.getElementsByTagName("아이디");
						Node id_node1 = id_node_list1.item(0);
						System.out.println(id_node1.getNodeName() + "  : " + id_node1.getTextContent());

						NodeList id_node_list2 = news_element.getElementsByTagName("시간");
						Node id_node2 = id_node_list2.item(0);
						System.out.println(id_node2.getNodeName() + "  : " + id_node2.getTextContent());

						NodeList id_node_list3 = news_element.getElementsByTagName("카테고리");
						Node id_node3 = id_node_list3.item(0);
						System.out.println(id_node3.getNodeName() + "  : " + id_node3.getTextContent());

						NodeList id_node_list4 = news_element.getElementsByTagName("댓글갯수");
						Node id_node4 = id_node_list4.item(0);
						System.out.println(id_node4.getNodeName() + "  : " + id_node4.getTextContent());

						NodeList id_node_list5 = news_element.getElementsByTagName("댓글위치");
						Node id_node5 = id_node_list5.item(0);
						System.out.println(id_node5.getNodeName() + "  : " + id_node5.getTextContent());
					}
				}
			}
		}
		catch (Exception e) {
			System.out.println(e.getMessage());
			//e.printStackTrace();
		}
	}
}




xml 소스 입니다

<테이블>
<글번호>27 
<본문>9컨텐츠내용 
<아이디>paranmul@paranmul.pe.kr 
<시간>11.08.16 18:58 
<카테고리>일상 
<댓글갯수>0 
<댓글위치>0 
 
<테이블>
<글번호>26 
<본문>8컨텐츠내용 
<아이디>paranmul@paranmul.pe.kr 
<시간>11.08.16 18:58 
<카테고리>일상 
<댓글갯수>0 
<댓글위치>0 
 



신고





Posted by 파란물






일반 웹페이지를 모바일 웹 페이지로 자동 변환



구글은 정말 대단한거 같습니다

뭔가 항상 찾다보면 구글에 답이 있어서 놀라곤 합니다

이번엔 복잡한 웹페이지를 모바일로 바꾸기위해 파싱 노가다를 하고 있었는데요
페이지가 규칙적이지 않아 모든 페이지에대한 파싱 조건을 만들기 어렵다고 판단되어 고민을 하고 있었습니다

어떻게하면 다 파싱이 가능할까 고민하다가
혹시 일반 웹페이지를 모바일 웹페이지로 바꿔주는 사이트가 있을까? 해서 찾아봤는데
국내에 유로로 제공하는 사이트 한곳과 (http://www.must.or.kr/ko/solution/mwmc/)

구글에서 무료로 모바일 웹페이지로 변환 해준다는 것을 알았습니다

그동안 파싱한게; 수포로 돌아가고있습니다 ㅡㅜ




제가 파싱하려는 페이지 입닌다
(ibm 디벨로퍼웍스 기사 페이지)

해당 페이지 확인해보기 

http://www.ibm.com/developerworks/kr/library/x-xformsaccttool6/index.html?ca=drs-





구글을 이용해서 파싱된 페이지 입니다

해당 페이지 확인해 보기 

http://www.google.co.kr/gwt/x?u=http%3A%2F%2Fwww.ibm.com%2Fdeveloperworks%2Fkr%2Flibrary%2Fx-xformsaccttool6%2Findex.html%3Fca%3Ddrs-&btnGo=%EC%A0%9C%EC%B6%9C&source=wax&ie=UTF-8&oe=UTF-8 
 



구글 웹페이지를 모바일 웹페이지로 변환하는 서비스
http://www.google.co.kr/gwt/x

URL을 입력한후 제출을 누르면 변환된 페이지로 바뀝니다




하지만 문제점도 있습니다
제가 고민하던 테이블 안의 글씨도 아직 구글 모바일 웹 페이지 변환 에서도 완벽한 구현이 안되고 있습니다



그래도 그리 복잡하지 않은 사이트라면 구글의 모바일웹 페이지 전환 기능을 사용해서 볼 수 있어서 편리하긴 하네요
신고





Posted by 파란물

티스토리 툴바