github.com/easysoft/zendata@v0.0.0-20240513203326-705bd5a7fd67/internal/pkg/service/output-xml.go (about)

     1  package service
     2  
     3  import (
     4  	"fmt"
     5  
     6  	logUtils "github.com/easysoft/zendata/pkg/utils/log"
     7  )
     8  
     9  func (s *OutputService) GenXml() {
    10  	records := s.GenRecords()
    11  
    12  	s.PrintXmlHeader()
    13  
    14  	for i, record := range records {
    15  		line := s.getXmlLine(i, record)
    16  
    17  		logUtils.PrintRecord(line + "\n")
    18  	}
    19  
    20  	s.PrintXmlFooter()
    21  
    22  	return
    23  }
    24  
    25  func (s *OutputService) PrintXmlHeader() {
    26  	logUtils.PrintLine("<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<testdata>\n  <title>Test Data</title>\n")
    27  
    28  }
    29  func (s *OutputService) PrintXmlFooter() {
    30  	logUtils.PrintLine("</testdata>\n")
    31  }
    32  
    33  func (s *OutputService) getXmlLine(index int, record map[string]interface{}) string {
    34  	str := ""
    35  	j := 0
    36  	for key, val := range record {
    37  		str += fmt.Sprintf("    <%s>%v</%s>", key, val, key)
    38  		if j != len(record)-1 {
    39  			str = str + "\n"
    40  		}
    41  
    42  		j++
    43  	}
    44  
    45  	text := fmt.Sprintf("  <row>\n%s\n  </row>", str)
    46  
    47  	return text
    48  }