반응형
String 데이터 xml 파싱 하는 내용 정리 해요.
개발자는 백번의 글과 말보다 코드가 낫다.
Example 코드
public static void main(String[] args)
{
StringBuffer sb = new StringBuffer();
sb.append("<?xml version=\"1.0\" encoding=\"UTF-8\" ?>");
sb.append("<root>");
sb.append("<name>ynkim</name>");
sb.append("<age>18</age>");
sb.append("<addr>서울시 서초구 서초역 3번 출구</addr>");
sb.append("<customerTel>01099991234</customerTel>");
sb.append("</root>");
InputStream is = new ByteArrayInputStream(sb.toString().getBytes());
Document doc = null;
try
{
doc = parseXML(is);
} catch (Exception e)
{
e.printStackTrace();
}
// XPath 인스턴스 생성
XPath xpath = XPathFactory.newInstance().newXPath();
// 대상 노드 지정
// 하위 path를 지정할때는 /root/name 과 같이 접근하면 됨
String expression = "/root";
// 지정 노드로 부터 노드목록 획득
NodeList nl = null;
try
{
nl = (NodeList) xpath.evaluate(expression, doc, XPathConstants.NODESET);
}
catch (XPathExpressionException e)
{
e.printStackTrace();
}
// 첫번째 노드의 부모 노드명을 출력
System.out.println(nl.item(0).getParentNode().getNodeName());
System.out.println("sub node start!!");
System.out.println("-----------------------------------------------------");
// 1번째 book 노드의 자식노드 목록을 획득
NodeList nodeList = nl.item(0).getChildNodes(); // author, title, genre, price, publish_date, description
System.out.println(nodeList.item(0).getParentNode().getNodeName());
// 확보된 노드 목록을 순서대로 출력
for(int i=0; i<nodeList.getLength(); i++)
{
Node node = nodeList.item(i);
// 현재 노드 인덱스 번호 출력
if (node.getNodeType() == Node.ELEMENT_NODE)
{
System.out.println("Element Node Node Name = " + node.getNodeName());
System.out.println("Element Node Text Content = " + node.getTextContent());
}
if (node.getNodeType() == Node.TEXT_NODE) {
System.out.println("Text Node Node Name = " + node.getNodeName());
System.out.println("Text Node Text Content = " + node.getTextContent());
}
}
System.out.println("-----------------------------------------------------");
}
public static Document parseXML(InputStream stream) throws Exception
{
DocumentBuilderFactory objDocumentBuilderFactory = null;
DocumentBuilder objDocumentBuilder = null;
Document doc = null;
try
{
objDocumentBuilderFactory = DocumentBuilderFactory.newInstance();
objDocumentBuilder = objDocumentBuilderFactory.newDocumentBuilder();
doc = objDocumentBuilder.parse(stream);
}catch(Exception ex){
throw ex;
}
return doc;
}
반응형
댓글