[java] XML 파일에서 중복 요소 제거하기
먼저, 다음과 같은 간단한 XML 파일이 있다고 가정해 봅시다.
<students>
<student>
<id>1</id>
<name>John</name>
</student>
<student>
<id>2</id>
<name>Amy</name>
</student>
<student>
<id>1</id>
<name>John</name>
</student>
</students>
위의 XML 파일에서 <student>
요소 중에서 중복된 내용을 제거해야 합니다.
아래는 Java를 사용하여 XML을 파싱하고 중복된 요소를 제거하는 예제 코드입니다.
import java.io.StringReader;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import org.w3c.dom.Document;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import org.xml.sax.InputSource;
public class RemoveDuplicateElements {
public static void main(String[] args) throws Exception {
String xml = "<students><student><id>1</id><name>John</name></student><student><id>2</id><name>Amy</name></student><student><id>1</id><name>John</name></student></students>";
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = factory.newDocumentBuilder();
Document document = builder.parse(new InputSource(new StringReader(xml)));
NodeList studentNodes = document.getElementsByTagName("student");
for (int i = 0; i < studentNodes.getLength(); i++) {
Node currentNode = studentNodes.item(i);
String id = currentNode.getChildNodes().item(1).getTextContent();
String name = currentNode.getChildNodes().item(3).getTextContent();
for (int j = i + 1; j < studentNodes.getLength(); j++) {
Node nextNode = studentNodes.item(j);
if (id.equals(nextNode.getChildNodes().item(1).getTextContent()) && name.equals(nextNode.getChildNodes().item(3).getTextContent())) {
nextNode.getParentNode().removeChild(nextNode);
}
}
}
// 중복이 제거된 XML 출력
System.out.println(toString(document));
}
public static String toString(Document document) {
// TODO: Document 객체를 문자열로 변환하여 반환하는 코드 구현
return null;
}
}
위의 코드는 DOM을 사용하여 XML을 파싱하고 중복된 요소를 제거하는 기본적인 방법을 보여주고 있습니다. 필요한 경우 Document 객체를 문자열로 변환하는 코드를 추가하여 최종적으로 중복이 제거된 XML을 얻을 수 있습니다.
참고문헌:
- https://docs.oracle.com/javase/7/docs/api/javax/xml/parsers/DocumentBuilder.html
- https://docs.oracle.com/javase/7/docs/api/org/w3c/dom/package-summary.html