Java는dom 방식을 이용하여 xml 상세 및 실례 코드를 읽고 만듭니다
1. 인터페이스 만들기
XmlInterface.Java
public interface XmlInterface
{
/**
*
XML
*
@param fileName
*/
public void createXml(String
fileName);
/**
*
XML
*
@param fileName
*/
public void parserXml(String
fileName);
}
인터페이스 구현XmlImpl.java
package com.test.xml;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.PrintWriter;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import javax.xml.transform.OutputKeys;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerConfigurationException;
import javax.xml.transform.TransformerException;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import org.xml.sax.SAXException;
public class XmlImpl implements XmlInterface{
private Document
document;
public void init()
{
try {
DocumentBuilderFactory
factory = DocumentBuilderFactory
.newInstance();
DocumentBuilder
builder = factory.newDocumentBuilder();
this.document
= builder.newDocument();
} catch (ParserConfigurationException
e) {
System.out.println(e.getMessage());
}
}
public void createXml(String
fileName) {
Element
root = this.document.createElement("scores");
this.document.appendChild(root);
Element
employee = this.document.createElement("employee");
Element
name = this.document.createElement("name");
name.appendChild(this.document.createTextNode("wangchenyang"));
employee.appendChild(name);
Element
sex = this.document.createElement("sex");
sex.appendChild(this.document.createTextNode("m"));
employee.appendChild(sex);
Element
age = this.document.createElement("age");
age.appendChild(this.document.createTextNode("26"));
employee.appendChild(age);
root.appendChild(employee);
TransformerFactory
tf = TransformerFactory.newInstance();
try {
Transformer
transformer = tf.newTransformer();
DOMSource
source = new DOMSource(document);
transformer.setOutputProperty(OutputKeys.ENCODING, "gb2312");
transformer.setOutputProperty(OutputKeys.INDENT, "yes");
PrintWriter
pw = new PrintWriter(new FileOutputStream(fileName));
StreamResult
result = new StreamResult(pw);
transformer.transform(source,
result);
System.out.println(" XML !");
} catch (TransformerConfigurationException
e) {
System.out.println(e.getMessage());
} catch (IllegalArgumentException
e) {
System.out.println(e.getMessage());
} catch (FileNotFoundException
e) {
System.out.println(e.getMessage());
} catch (TransformerException
e) {
System.out.println(e.getMessage());
}
}
public void parserXml(String
fileName) {
try {
DocumentBuilderFactory
dbf = DocumentBuilderFactory.newInstance();
DocumentBuilder
db = dbf.newDocumentBuilder();
Document
document = db.parse(fileName);
NodeList
employees = document.getChildNodes();
for (int i
= 0;
i < employees.getLength(); i++) {
Node
employee = employees.item(i);
NodeList
employeeInfo = employee.getChildNodes();
for (int j
= 0;
j < employeeInfo.getLength(); j++) {
Node
node = employeeInfo.item(j);
NodeList
employeeMeta = node.getChildNodes();
for (int k
= 0;
k < employeeMeta.getLength(); k++) {
System.out.println(employeeMeta.item(k).getNodeName()
+ ":" +
employeeMeta.item(k).getTextContent());
}
}
}
System.out.println(" ");
} catch (FileNotFoundException
e) {
System.out.println(e.getMessage());
} catch (ParserConfigurationException
e) {
System.out.println(e.getMessage());
} catch (SAXException
e) {
System.out.println(e.getMessage());
} catch (IOException
e) {
System.out.println(e.getMessage());
}
}
}
테스트
public class Main
{
public static void main(String
args[]){
XmlImpl
dd=new XmlImpl();
String
str="D:/grade.xml";
dd.init();
dd.createXml(str); // xml
dd.parserXml(str); // xml
}
}
결과xml 생성
<?xml version="1.0" encoding="GB2312"?>
<scores>
<employee>
<name>wangchenyang</name>
<sex>m</sex>
<age>26</age>
</employee>
</scores>
읽기 xml
XML !
#text:
name:wangchenyang
#text:
sex:m
#text:
age:26
#text:
읽어주셔서 감사합니다. 여러분에게 도움이 되었으면 좋겠습니다. 본 사이트에 대한 지지에 감사드립니다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
JPA + QueryDSL 계층형 댓글, 대댓글 구현(2)이번엔 전편에 이어서 계층형 댓글, 대댓글을 다시 리팩토링해볼 예정이다. 이전 게시글에서는 계층형 댓글, 대댓글을 구현은 되었지만 N+1 문제가 있었다. 이번에는 그 N+1 문제를 해결해 볼 것이다. 위의 로직은 이...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.