2013년 8월 13일 화요일

[오라클자바community]JAVA DOM

노드 추가와 관련된 Document 객체의 메소드

Document.createElement(String TagName)
 문서의 “요소”를 작성 한다.
Document.createTextNode(String data)
   문서의 “텍스트”를 작성 한다.
Document.createCommand(String data)
 문서의 “주석”를 작성 한다.
Document.createCDATASection(String data)
   문서의 “CDATA 섹션”를 작성 한다.

Document.createProcessingInstruction(String data)
 문서의 “처리 명령”을 작성 한다.
Document.createAttribute(String attr)
   문서의 “속성”를 작성 한다.
Document.createEntityReference(String name)
 문서의 “엔티티 참조”를 작성 한다.
Element 객체에 속성을 추가하기 위한 메소드
Element.setAttribute(String name, Stirng value)


텍스트를 작성 하려면
Document.createTextNode()를 이용하여 TextNode를 생성
Node.appendChild()를 이용하여 해당 노드에 추가한다.



TextNode 추가 예 – car 요소에 추가

if (ch.getNodeType() == Node.ELEMENT_NODE) {
if (ch.getNodeName().equals(“car”)) {
Document doc = ch.getOwnerDocument();
Text text = doc.createTextNode(“차 데이터…”);
ch.appendChild(text);
}
}









car4.xml
<?xml version="1.0" encoding="euc-kr" ?>
<cars>
<car>
<name>승용차</name>
<price>150</price>
</car>
<car>
<name>트럭</name>
<price>500</price>
</car>
</cars>


AttrInsert.java
import java.io.*;
import javax.xml.parsers.*;
import org.w3c.dom.*;
import org.apache.crimson.tree.*;
class AttrInsert {
public static void main(String[] args) throws Exception{
//DOM을 준비 한다.
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
DocumentBuilder db = dbf.newDocumentBuilder();
//문서를 읽어 들인다.
Document doc = db.parse(new FileInputStream("car4.xml"));
//문서의 출발점을 얻음
Element root = doc.getDocumentElement();
//노드를 탐색 하자.
walk(root);
//문서를 써 낸다.
XmlDocument xdoc = (XmlDocument) doc;
BufferedWriter bw = new BufferedWriter(new FileWriter("result4.xml"));
xdoc.write(bw, "euc-kr");
bw.close();
System.out.println("속성 추가 OK~");
}
//****************** 노드를 탐색 한다.
public static void walk(Node n) {
//지정된 노드의 최초의 자식 노드로 부터, 자식이 있는 동안 
// 반복적으로 노드를 탐색 함
for(Node ch = n.getFirstChild();ch != null; ch = ch.getNextSibling()) {
if (ch.getNodeType() == Node.ELEMENT_NODE) {
if (ch.getNodeName().equals("car")) {
Element elm = (Element) ch;
elm.setAttribute("company", "현대자동차");
}
walk(ch);
}
}
}
}


실행 결과 – result4.xml

<?xml version="1.0" encoding="euc-kr"?>
<cars>
  <car company="현대자동차">
    <name>승용차</name>
    <price>150</price>
  </car>
  <car company="현대자동차">
    <name>트럭</name>
    <price>500</price>
  </car>
</cars>



이상 DOM에 대해 알아 보았습니다... 유용하게 이용바랍니다.

감사합니다...

댓글 없음:

댓글 쓰기