Java XML removeChild()

2023. 1. 9. 22:46Java

프로젝트 내 src 내 xml 패키지 내 test01.dtd

<?xml version="1.0" encoding="UTF-8"?>
<!-- 엘리먼트 선언 -->
<!ELEMENT 도서리스트 (책)* >
    <!ELEMENT 책 (제목, 저자+, 출판사, 가격)>
        <!ELEMENT 제목 (#PCDATA)>
        <!ELEMENT 저자 (#PCDATA)>
        <!ELEMENT 출판사 (#PCDATA)>
        <!ELEMENT 가격 (#PCDATA)>
<!-- <!ELEMENT 도서리스트 (책*) > 으로 해도 된다 책이라는 자식 엘레먼트를 생략할 수도있고
또 여러번 사용할수도 있다는 의미다. 저자+ 는 한번이상여러번 이라는 의미다. (#PCDATA) 는
문자데이타라는 의미다. -->

<!-- 속성 선언 -->
    <!ATTLIST 책
        id ID #IMPLIED
       분류 CDATA #REQUIRED>

프로젝트 내 src 내 xml 패키지 내 test01.xml

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

<!-- 도서리스트 만들기 전에 독타입 선언 -->
<!DOCTYPE 도서리스트 SYSTEM "test01.dtd">

<도서리스트>
    <책 분류="컴퓨터" id="book1">
        <제목>JAVA 프로그래밍</제목>
        <저자>김말똥</저자>
        <출판사>아이티 출판</출판사>
        <가격>20000</가격>
    </책>
    <책 분류="소설">
        <제목>삼국지</제목>
        <저자>이문열</저자>
        <출판사>역사 출판</출판사>
        <가격>15000</가격>
    </책>
    <책 분류="컴퓨터">
        <제목>C언어</제목>
        <저자>강길동</저자>
        <출판사>터보 출판사</출판사>
        <가격>15000</가격>
    </책>
</도서리스트>

프로젝트 내 src 내 java_xml 패키지 내 RemoveDOM.java

package java_xml;

import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;

import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Text;

public class RemoveDOM {

	public static void main(String[] args) throws Exception {
		DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
		factory.setIgnoringElementContentWhitespace(true);
		DocumentBuilder builder = factory.newDocumentBuilder();

		//XML 문서 파싱
		Document doc = builder.parse("src/xml/test01.xml");

		// ROOT 엘리먼트 얻기(기본적으로 getDocumentElement() 와
		// getLastChild() 는 노드타입을 반환
		Element rootElement = (Element)doc.getDocumentElement();

		//DOM 객체의 제거코드 : parentElement.removeChild(childElement);
		Element book = (Element)rootElement.getFirstChild();
		rootElement.removeChild(book);
		
		book = (Element)rootElement.getFirstChild();
		Element title = (Element)book.getFirstChild();
		Text txtTitle = (Text)title.getFirstChild();
		String strTitle = txtTitle.getData();
		
		System.out.println(strTitle);
	}

}

 

본인은 RemoveDOM.java 파일이 Text file encoding 에서 EUC-KR 로 되어 있어

RemoveDOM.java 를 Run As > Java Application 으로 실행하였을 때

콘솔 창에서 한글이 깨져나왔다. 확인해 보니 오른쪽 마우스 클릭해서

Run As > Run Configurations... 창안에

탭 중 Common을 클릭해 보니

Encoding 에 Default - inherited (EUC-KR) 로 설정이

되어있었다..

그리하여 Other 에서 UTF-8로 Apply 후 

Run 을 클릭하였고 콘솔 창에서 한글깨짐이

사라졌다.

이것은 콘솔창을 Window > Preferences 에서 UTF-8 으로 설정해 놓았기 

때문이 아닐까 싶다..

'Java' 카테고리의 다른 글

Java XML ContentHandler  (0) 2023.01.12
Java XML TransformerFactory  (0) 2023.01.10
Java XML setErrorHandler()  (1) 2023.01.09
Java XML EntityResolver  (1) 2023.01.08
Java XML SAXParserFactory  (0) 2023.01.08