sjava-config xml configuration 파일저장 코드

낭중에 아래의 형태로 추가를 해야겠습니다.

public boolean write(ArrayList<ConfigValue> list) throws Exception {
                
        for(int i=0; i < list.size(); i++) {
            System.out.println(list.get(i).getService() +” – “+ list.get(i).getKey()+” – “+ list.get(i).getValues().toString());
        }
       
        String fileName = “config-test.xml”;
        String empty =”    “;        
       
        try {       
            XMLOutputFactory xmlFactory = XMLOutputFactory.newInstance();
            XMLStreamWriter writer = xmlFactory.createXMLStreamWriter(new java.io.FileWriter(fileName));
       
            writer.writeStartDocument(“1.0”);
            writer.writeCharacters(System.getProperty(“line.separator”));
            writer.writeStartElement(“sjava-config”);
            writer.writeCharacters(System.getProperty(“line.separator”));
           
           
            String serviceName = list.get(0).getService();
           
            ArrayList<String> serviceList = new ArrayList<String>();
            serviceList.add(serviceName);
           
            for(int i=0; i < list.size(); i++) {
                if(!serviceName.equals(list.get(i).getService()) ) {
                    serviceName = list.get(i).getService();
                    serviceList.add(serviceName);
                }
            }
           
            for(int i=0; i < serviceList.size(); i++) {
                writer.writeCharacters(empty);
                writer.writeStartElement(“sjava-service”);
                writer.writeAttribute(“name”, serviceList.get(i));
                writer.writeCharacters(System.getProperty(“line.separator”));
               
               
                for(int j=0; j < list.size(); j++) {
                    if(serviceList.get(i).equals(list.get(j).getService()) ) {
                        serviceName = list.get(j).getService();
                       
                        writer.writeCharacters(empty + empty);
                        writer.writeStartElement(“key”);
                        writer.writeAttribute(“name”, list.get(j).getKey());
                       
                        String tmpValue = “”;
                        for(int z =0; z < list.get(j).getValues().length; z++) {
                            tmpValue += list.get(j).getValues()[z];
                            if(z != list.get(j).getValues().length-1)
                                tmpValue +=”,”;
                        }
                           
                        writer.writeAttribute(“value”, tmpValue);
                        writer.writeEndElement();
                        writer.writeCharacters(System.getProperty(“line.separator”));
                    }
                }
                writer.writeCharacters(empty);
                writer.writeEndElement();
                writer.writeCharacters(System.getProperty(“line.separator”));
            }
           
            writer.writeEndElement();
            writer.flush();
            writer.close();
           
        } catch(Exception e) {
            e.printStackTrace();
        }
       
        return true;
    }

위 코드로 아래의 결과를 만들어 낼 수 있다.

<?xml version=”1.0″?>
<sjava-config>
    <sjava-service name=”sjava-config”>
        <key name=”watch” value=”false”></key>
        <key name=”period” value=”60″></key>
    </sjava-service>
    <sjava-service name=”sjava-logging-server”>
        <key name=”host” value=”111.111.111.111,222.222.222.222″></key>
        <key name=”port” value=”20003″></key>
    </sjava-service>
</sjava-config>

답글 남기기

이메일은 공개되지 않습니다. 필수 입력창은 * 로 표시되어 있습니다.