import java.io.IOException; import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory; import javax.xml.parsers.ParserConfigurationException; import javax.xml.xpath.XPath; import javax.xml.xpath.XPathConstants; import javax.xml.xpath.XPathExpressionException; import javax.xml.xpath.XPathFactory;
import org.w3c.dom.Document; import org.w3c.dom.Node; import org.w3c.dom.NodeList; import org.xml.sax.SAXException;
public class XMLParser { private static final String CONST_PRE_PIX = "//"; private DocumentBuilderFactory factory; private DocumentBuilder builder; private Document document; private XPathFactory xPathfactory; private XPath xpath;
public XMLParser() { try { factory = DocumentBuilderFactory.newInstance(); builder = factory.newDocumentBuilder(); xPathfactory = XPathFactory.newInstance(); xpath = xPathfactory.newXPath();
} catch (ParserConfigurationException e) { e.printStackTrace(); } }
/** * @param path * @throws Exception * XML 파일 경로 */ public void setXML(String path) throws Exception { try { document = builder.parse("D:/env/workspace/TEST/Test01/temp/test.xml"); } catch (SAXException e) { throw new Exception("XML파일이 정상적인 포맷이 아닙니다."); } catch (IOException e) { throw new Exception("해당 경로에 XML파일을 찾을 수 없습니다."); } }
/** * @param path * @return * @throws Exception * 리스트 형태의 노드 획득 */ public NodeList getNodeList(String path) throws Exception { NodeList nodeList = null; try { nodeList = (NodeList) xpath.evaluate( CONST_PRE_PIX + path, document, XPathConstants.NODESET); } catch (XPathExpressionException e) { throw new Exception("해당 표현식에 해당하는 경로가 없습니다."); } return nodeList; }
/** * @param path * @return * @throws Exception * 하나의 노드 획득 */ public Node getNode(String path) throws Exception { Node node = null; try { node = (Node) xpath.evaluate( CONST_PRE_PIX + path, document, XPathConstants.NODE); } catch (XPathExpressionException e) { throw new Exception("해당 표현식에 해당하는 경로가 없습니다."); } return node; }
/** * @param path * @return * @throws Exception * 노드의 텍스트 획득 */ public String getText(String path) throws Exception { String text = null; try { text = (String) xpath.evaluate( CONST_PRE_PIX + path, document, XPathConstants.STRING); } catch (XPathExpressionException e) { throw new Exception("해당 표현식에 해당하는 경로가 없습니다."); } return text; } } |
'프로그래밍 > Java' 카테고리의 다른 글
[자바/JAVA] 디자인패턴#5 생산자/소비자 패턴( Producer/Consumer Pattern) (0) | 2017.11.17 |
---|---|
[JAVA/실전코딩] 파일로부터 학생의 점수를 입력받아 학점을 부여하는 프로그램 (0) | 2017.11.17 |
[JAVA/실전코딩] N개의 정수를 입력받아 최대값을 출력하는 프로그램 (0) | 2017.10.19 |
[JAVA/실전코딩] 키와 몸무게를 입력받아 비만도를 판별하는 프로그램 (0) | 2017.10.19 |
[JAVA/실전코딩] 급여와 근무년수를 입력하여 상여금을 출력하는 프로그램 (0) | 2017.10.19 |