반응형
    
    
    
  지난번에 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 | 
