Dom에서의 노드 추가 프로그램
<저자>와<발행년도>사이에 출판사라는 요소를 추가하고
추가한 노드의 자식으로 SysLab의 값을 가지는 xml파일을 수정하는 프로그램을 작성하는데
안되네요..ㅠㅠ
------------------------------------------------
<?xml version="1.0" encoding="EUC-KR"?>
<문헌정보>
<책 분류="XML">
<제목>XML이란
<저자>고길동
<발행년도>2002
-------------------------------------------------
import java.io.*;
import javax.xml.parsers.*;
import org.w3c.dom.*;
import java.lang.String.*;
import javax.xml.transform.*;
import javax.xml.transform.dom.*;
import javax.xml.transform.stream.*;
class hw6{
public static void main(String args[]) throws Exception{
DocumentBuilderFactory DomExe = DocumentBuilderFactory.newInstance();
DocumentBuilder Db = DomExe.newDocumentBuilder();
Document nDct=Db.newDocument();
Document Dct = Db.parse(new FileInputStream("Actual_6.xml"));
Element root=Dct.getDocumentElement();
searchNode(root);
TransformerFactory transformerFactory= TransformerFactory.newInstance();
Transformer serializer = transformerFactory.newTransformer();
serializer.setOutputProperty(OutputKeys.ENCODING,"euc-kr");
serializer.setOutputProperty(OutputKeys.INDENT,"yes");
serializer.transform(new DOMSource(nDct),new StreamResult(new FileOutputStream("new_6.xml")));
}
public static void searchNode(Node Ne){
for(Node ChNode=Ne.getFirstChild(); ChNode!=null; ChNode=ChNode.getNextSibling()){
if(ChNode.getNodeType()==Node.ELEMENT_NODE){
if(ChNode.getNodeName().equals("책")){
Document dnew=ChNode.getOwnerDocument();
Element enew=dnew.createElement("출판사");
Text tnew=dnew.createTextNode("SysLab");
ChNode.appendChild(enew);
enew.appendChild(tnew);
}
searchNode(ChNode);
}
}
}
}
총체적 난관...^^
여기서 newDocument()하실 필요는 없구요.
parse()한 결과를 nDct에 넣으셔야 합니다.
즉, 윗 라인 지우시고 아래 라인을
이렇게 바꾸시면 일단 xml파일을 읽어서 Document구조로 파싱할 겁니다.
글구.. xml문법이 이상하므로...;;; xml파싱에서 Exception들의 대군을 만나실 겁니다.
참고로...
디버깅 하실 때는
를
으로 두시고 하시면 화면에서 바로 확인 하실 수 있으니깐 좀 편하실겁니다.
댓글 달기