반응형
지난번에 XML RestAPI Return에 대해 포스팅을 하자마자, 실제 URL 호출 테스트를 해보니 웬걸 내가 전달받은 형태와는 판이하게 달랐다.
지난번에 작성한 부분은 아래와 같고, 그것에 대한 소스코드는 여기로 들어가면 된다.
1
2
3
4
5
6
7
|
<MAIN>
<AGE>16</AGE>
<SEX>Male</SEX>
<JOB>Student</JOB>
<PHONE>01022223333</PHONE>
<STATUS>Normal</STATUS>
</MAIN>
|
cs |
여튼, 이번에 서버와 통신을 해보니 다음과 같은 형식으로 이루어져야만 했다.
1
2
3
4
5
6
7
8
|
<?xml version="1.0" encoding="EUC-KR" standalone="no"?>
<MAIN>
<AGE value="16"/>
<SEX value="Male"/>
<JOB value="Student"/>
<PHONE value="01011112222"/>
<STATUS value="Normal"/>
</MAIN>
|
cs |
허미 ==;
여튼 그래서 다음과 같이 작성했다. 지난번의 경우에는 jackson-dataformat-xml 라이브러리를 활용했으나, 이번에는 기본적인 DocumentBuilderFactory를 활용하는걸로..
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
|
import java.io.StringWriter;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.transform.OutputKeys;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;
import org.w3c.dom.Element
import org.w3c.dom.Document;
import org.w3c.dom.Attr;
@GetMapping(path="/Main", produces=MediaType.APPLICATION_XML_VALUE)
public String xmlTestMain(HttpServletRequest request) throws Exception{
Document doc = null;
DocumentBuilderFactory factory = null;
factory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = factory.newDocumentBuilder();
doc = builder.newDocument();
//최상위 Root를 구성하는 Element 생성
Element rootElement = doc.createElement("MAIN");
doc.appendChild(rootElement);
//하위 Element를 생성.
Element ageElement = doc.createElement("AGE");
//Attribute 를 신규로 선언해주고, Document를 이용하여 value를 생성함
Attr attr = doc.createAttribute("value");
//생성된 Attr에 value를 세팅
attr.setValue("1");
//생성한 ageElement에 위에서 신규선언된 Attr을 세팅
ageElement.setAttributeNode(attr);
// ageElement를 rootElement의 하위요소로 지정
rootElement.appendChild(ageElement);
//위의 과정을 아래와 같이 단순화 시킬 수 있음
Element sexElement= doc.createElement("SEX");
sexElement.setAttribute("value", "Male");
rootElement.appendChild(sexElement);
Element jobElement = doc.createElement("JOB");
jobElement .setAttribute("value", "Student");
rootElement.appendChild(jobElement );
Element phoneElement = doc.createElement("PHONE");
phoneElement .setAttribute("value", "01011112222");
rootElement.appendChild(phoneElement );
Element statusElement = doc.createElement("STATUS");
statusElement .setAttribute("value", "Normal");
rootElement.appendChild(statusElement );
TransformerFactory transformerFactory = TransformerFactory.newInstance();
Transformer transformer = transformerFactory.newTransformer();
transformer.setOutputProperty(OutputKeys.ENCODING, "euc-kr");
transformer.setOutputProperty(OutputKeys.INDENT, "yes");
doc.setXmlStandalone(false);
StringWriter sw = new StringWriter();
transformer.transform(new DOMSource(doc), new StreamResult(sw));
String aaa = sw.getBuffer().toString();
return aaa;
}
|
cs |
에휴 일단 됐다... 좀 쉬자
반응형
'어장 Develop > 어장 JAVA' 카테고리의 다른 글
[Tomcat 9.x] JNDI설정 (0) | 2022.02.21 |
---|---|
[PDFBox] java Image to PDF (0) | 2021.08.24 |
[xml] RestAPI XML Return (0) | 2021.07.02 |
[SpringBoot] Async 사용하기 (0) | 2021.06.25 |
[SpringBoot] fixed delay, fixed rate의 차이 (0) | 2021.06.23 |