3. Implementation/Markup Language
XML 문서 편집
SSKK
2008. 8. 30. 23:13
1. 새로운 요소 추가
2. 원하는 요소의 삭제
3. 요소에 새로운 텍스트를 추가
4. 새로운 속성을 추가
5. 원하는 속성을 삭제
6. 원하는 요소들을 추출하여 새로운 XML을 작성
7. 원하는 속성들을 추출하여 새로운 XML을 작성
참고 : e-Campus 강좌 중에서...
import java.io.*; import javax.xml.parsers.*; import org.w3c.dom.*; import org.apache.crimson.tree.*; public class DOMParser06 { public static void main(String args[]) throws Exception { //DOM를 준비한다 DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); DocumentBuilder parser = dbf.newDocumentBuilder(); //문서 읽어들이기 Document xmldoc = parser.parse("student.xml"); //문서의 출발점을 얻는다 Element root = xmldoc.getDocumentElement(); //노드의 자식(child)노드를 찾아간다 getNode(root); //문서 써넣기 XmlDocument xdoc = (XmlDocument) xmldoc; BufferedWriter bw = new BufferedWriter(new FileWriter("student_addelement.xml")); xdoc.write(bw,"EUC-KR"); } //노드의 자(child)를 찾아간다 public static void getNode(Node n) { for(Node ch = n.getFirstChild();ch != null;ch = ch.getNextSibling()) { //요소를 처리한다 if(ch.getNodeType() == Node.ELEMENT_NODE){ if(ch.getNodeName().equals("초등학생")){ Document doc = ch.getOwnerDocument(); Element comp = doc.createElement("주소"); Text txt = doc.createTextNode("서울시 송파구"); ch.appendChild(comp); comp.appendChild(txt); } getNode(ch); } } } }
2. 원하는 요소의 삭제
import java.io.*; import javax.xml.parsers.*; import org.w3c.dom.*; import org.apache.crimson.tree.*; public class DOMParser07 { public static void main(String args[]) throws Exception { //DOM를 준비한다 DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); DocumentBuilder parser = dbf.newDocumentBuilder(); //문서 읽어들이기 Document xmldoc = parser.parse("student.xml"); //문서의 출발점을 얻는다 Element root = xmldoc.getDocumentElement(); //노드의 자식(child)노드를 찾아간다 getNode(root); //문서 써넣기 XmlDocument xdoc = (XmlDocument) xmldoc; BufferedWriter bw = new BufferedWriter(new FileWriter("student_delelement.xml")); xdoc.write(bw,"EUC-KR"); } //노드의 자(child)를 찾아간다 public static void getNode(Node n) { for(Node ch = n.getFirstChild();ch != null;ch = ch.getNextSibling()){ //요소를 처리한다 if(ch.getNodeType() == Node.ELEMENT_NODE){ if(ch.getNodeName().equals("주소")){ Node pr = ch.getParentNode(); pr.removeChild(ch); } getNode(ch); } } } }
3. 요소에 새로운 텍스트를 추가
import java.io.*; import javax.xml.parsers.*; import org.w3c.dom.*; import org.apache.crimson.tree.*; public class DOMParser08 { public static void main(String args[]) throws Exception { //DOM를 준비한다 DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); DocumentBuilder parser = dbf.newDocumentBuilder(); //문서 읽어들이기 Document xmldoc = parser.parse(new FileInputStream("student.xml")); //문서의 출발점을 얻는다 Element root = xmldoc.getDocumentElement(); //노드의 자식(child)노드를 찾아간다 getNode(root); //문서 써넣기 XmlDocument xdoc = (XmlDocument) xmldoc; BufferedWriter bw = new BufferedWriter(new FileWriter("student_addtext.xml")); xdoc.write(bw,"EUC-KR"); } public static void getNode(Node n) { for(Node ch = n.getFirstChild();ch != null;ch = ch.getNextSibling()){ //요소를 처리한다 if(ch.getNodeType() == Node.ELEMENT_NODE){ if(ch.getNodeName().equals("초등학생")){ Document doc = ch.getOwnerDocument(); Text txt = doc.createTextNode("초등학생 자료입니다."); ch.appendChild(txt); } getNode(ch); } } } }
4. 새로운 속성을 추가
import java.io.*; import javax.xml.parsers.*; import org.w3c.dom.*; import org.apache.crimson.tree.*; public class DOMParser09 { public static void main(String args[]) throws Exception { //DOM를 준비한다 DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); DocumentBuilder parser = dbf.newDocumentBuilder(); //문서 읽어들이기 Document xmldoc = parser.parse("student.xml"); //문서의 출발점을 얻는다 Element root = xmldoc.getDocumentElement(); //노드의 자식(child)노드를 찾아간다 getNode(root); //문서 써넣기 XmlDocument xdoc = (XmlDocument) xmldoc; BufferedWriter bw = new BufferedWriter(new FileWriter("student_addattr.xml")); xdoc.write(bw,"EUC-KR"); } //노드의 자(child)를 찾아간다 public static void getNode(Node n) { for(Node ch = n.getFirstChild();ch != null;ch = ch.getNextSibling()){ //요소를 처리한다 if(ch.getNodeType() == Node.ELEMENT_NODE) { if(ch.getNodeName().equals("초등학생")) { Element elm =(Element) ch; elm.setAttribute("학년", "3"); } getNode(ch); } } } }
5. 원하는 속성을 삭제
import java.io.*; import javax.xml.parsers.*; import org.w3c.dom.*; import org.apache.crimson.tree.*; public class DOMParser10 { public static void main(String args[]) throws Exception { //DOM를 준비한다 DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); DocumentBuilder parser = dbf.newDocumentBuilder(); //문서 읽어들이기 Document xmldoc = parser.parse("student.xml"); //문서의 출발점을 얻는다 Element root = xmldoc.getDocumentElement(); //노드의 자식(child)노드를 찾아간다 getNode(root); //문서 써넣기 XmlDocument xdoc = (XmlDocument) xmldoc; BufferedWriter bw = new BufferedWriter(new FileWriter("student_delattr.xml")); xdoc.write(bw,"EUC-KR"); } //노드의 자식(child)노드를 찾아간다 public static void getNode(Node n) { for(Node ch = n.getFirstChild();ch != null;ch = ch.getNextSibling()) { //요소를 처리한다 if(ch.getNodeType() == Node.ELEMENT_NODE) { if(ch.getNodeName().equals("이름")) { NamedNodeMap attrmap = ch.getAttributes(); attrmap.removeNamedItem("성별"); } getNode(ch); } } } }
6. 원하는 요소들을 추출하여 새로운 XML을 작성
import java.io.*; import javax.xml.parsers.*; import org.w3c.dom.*; import org.apache.crimson.tree.*; public class DOMParser11 { public static void main(String args[]) throws Exception { //DOM를 준비한다 DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); DocumentBuilder parser = dbf.newDocumentBuilder(); //문서 읽어들이기 Document xmldoc1 = parser.parse(new FileInputStream("student.xml")); //문서를 새로 작성한다 Document xmldoc2 = parser.newDocument(); //루트 요소를 추가한다 Element root = xmldoc2.createElement("어린이"); xmldoc2.appendChild(root); //요소를 추출한다 NodeList lst = xmldoc1.getElementsByTagName("이름"); for(int i=0; i<lst.getLength(); i++){ Node n = lst.item(i); for(Node ch = n.getFirstChild();ch != null;ch = ch.getNextSibling()){ Element elm = xmldoc2.createElement("이름"); Text txt = xmldoc2.createTextNode(ch.getNodeValue()); elm.appendChild(txt); root.appendChild(elm); } } //문서 써넣기 XmlDocument xdoc = (XmlDocument) xmldoc2; BufferedWriter bw = new BufferedWriter(new FileWriter("student_new.xml")); xdoc.write(bw,"EUC-KR"); } }
7. 원하는 속성들을 추출하여 새로운 XML을 작성
import java.io.*; import javax.xml.parsers.*; import org.w3c.dom.*; import org.apache.crimson.tree.*; public class DOMParser12 { public static void main(String args[]) throws Exception { //DOM를 준비한다 DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); DocumentBuilder parser = dbf.newDocumentBuilder(); //문서 읽어들이기 Document xmldoc1 = parser.parse(new FileInputStream("student.xml")); //문서를 새로 작성한다 Document xmldoc2 = parser.newDocument(); //루트 요소를 추가한다 Element root = xmldoc2.createElement("어린이"); xmldoc2.appendChild(root); //요소를 추출한다 NodeList lst = xmldoc1.getElementsByTagName("이름"); for(int i=0; i<lst.getLength(); i++){ Node n = lst.item(i); NamedNodeMap attrlist = n.getAttributes(); Node attr = attrlist.getNamedItem("성별"); Element elm = xmldoc2.createElement("성별"); Text txt = xmldoc2.createTextNode(attr.getNodeValue()); elm.appendChild(txt); root.appendChild(elm); } //문서 써넣기 XmlDocument xdoc = (XmlDocument) xmldoc2; BufferedWriter bw = new BufferedWriter(new FileWriter("student_newattr.xml")); xdoc.write(bw,"EUC-KR"); } }
참고 : e-Campus 강좌 중에서...