Undergoing

[struts] xml에 있는 값 불러오기 본문

개발/Web Development

[struts] xml에 있는 값 불러오기

Halkrine 2012. 8. 31. 19:01

Exer.xml(경로 : c:\XMLExer\)


 <?xml version="1.0" encoding="UTF-8"?>

<struts>

<action name="login" class="pene.action.common.ActionExer1" method="hello">

            <result name="sucess">/sucess.jsp</result>

            <result name="fail">/fail.jsp</result>

        </action>

 <action name="index" class="pene.action.common.ActionExer2" method="hi">

            <result name="sucess">/sucess.jsp</result>

            <result name="fail">/fail.jsp</result>

        </action>

</struts>


xmlLoader.java


import java.io.File;


import javax.xml.parsers.DocumentBuilderFactory;

import javax.xml.parsers.DocumentBuilder;


import org.w3c.dom.Document;

import org.w3c.dom.Element;

import org.w3c.dom.NamedNodeMap;

import org.w3c.dom.Node;

import org.w3c.dom.NodeList;


public class xmlLoader {


public static void main(String[] args) {

try

{

File fXmlFile = new File("C:\\XMLExer\\file2.xml");

DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();

DocumentBuilder dBuilder = dbFactory.newDocumentBuilder();

Document doc = dBuilder.parse(fXmlFile);

doc.getDocumentElement().normalize();

// node 이름 및 자식 노드의 길이 검색

System.out.println(doc.getDocumentElement().getNodeName());

System.out.println("----------");

Element ele = doc.getDocumentElement();

System.out.println(ele.getChildNodes().getLength());

System.out.println("----------");

//////////////////////////////////////

// login 가져옴 //

//////////////////////////////////////

NodeList nList2 = ele.getChildNodes();

System.out.println(nList2.item(0).getNodeName());

System.out.println("----------");

//action element(login)의 값을 가져옴

NamedNodeMap nnMap  = nList2.item(1).getAttributes();

System.out.println(nnMap.getNamedItem("name"));

System.out.println(nnMap.getNamedItem("class"));

System.out.println(nnMap.getNamedItem("method"));

System.out.println("----------");

//attribute name을 제외한 순수 값만을 가져옴(login)

Node nameNode = nnMap.getNamedItem("name");

Node classNode = nnMap.getNamedItem("class");

Node methodNode = nnMap.getNamedItem("method");

System.out.println(nameNode.getNodeValue());

System.out.println(classNode.getNodeValue());

System.out.println(methodNode.getNodeValue());

System.out.println("----------");

//action element의 첫번째 자식 element를 가져옴

NodeList nNodelist1  = nList2.item(1).getChildNodes();

nNodelist1.item(1);

System.out.println(nNodelist1.item(1));

System.out.println("----------");

NamedNodeMap sucMap = nNodelist1.item(1).getAttributes();

System.out.println(sucMap.getNamedItem("name"));

System.out.println("----------");

System.out.println(sucMap.getNamedItem("name").getNodeValue());

System.out.println("----------");


//action element의 두번째 자식 element를 가져옴

NodeList nNodelist11 = nList2.item(3).getChildNodes();

nNodelist11.item(1);

System.out.println(nNodelist11.item(1));

System.out.println("----------");

NamedNodeMap failMap = nNodelist1.item(3).getAttributes();

System.out.println("----------");

System.out.println(failMap.getNamedItem("name"));

System.out.println("----------");

System.out.println(failMap.getNamedItem("name").getNodeValue());

System.out.println("----------");

//////////////////////////////////////

// index 가져옴 //

//////////////////////////////////////

//action element(index)의 값을 가져옴

NamedNodeMap nnMap1  = nList2.item(3).getAttributes();

System.out.println(nnMap1.getNamedItem("name"));

System.out.println(nnMap1.getNamedItem("class"));

System.out.println(nnMap1.getNamedItem("method"));

System.out.println("----------");

//attribute name을 제외한 순수 값만을 가져옴(index)

Node nameNode1 = nnMap1.getNamedItem("name");

Node classNode1 = nnMap1.getNamedItem("class");

Node methodNode1 = nnMap1.getNamedItem("method");

System.out.println(nameNode1.getNodeValue());

System.out.println(classNode1.getNodeValue());

System.out.println(methodNode1.getNodeValue());

System.out.println("----------");

//action element의 두번째 자식 element를 가져옴

NodeList nNodelist2  = nList2.item(3).getChildNodes();

nNodelist2.item(1);

System.out.println(nNodelist2.item(1));

System.out.println("----------");


NamedNodeMap sucMap1 = nNodelist2.item(1).getAttributes();

System.out.println(sucMap1.getNamedItem("name"));

System.out.println("----------");

System.out.println(sucMap1.getNamedItem("name").getNodeValue());

System.out.println("----------");

NamedNodeMap failMap1 = nNodelist2.item(3).getAttributes();

System.out.println(failMap.getNamedItem("name"));

System.out.println("----------");

System.out.println(failMap.getNamedItem("name").getNodeValue());

System.out.println("----------");

}catch(Exception e){e.printStackTrace();}

}


결과



null값 찍히는 부분은 다시 한 번 봐야겠다.

같은 action 영역이라고 생각했는데 두 번째 action 영역은 2가 아니라 3이더라.