class NurseRosteringOutputBuilder extends XmlOutputBuilder<NurseRoster> {

        private NurseRoster nurseRoster;

        @Override
        public void setSolution(NurseRoster solution) {
            nurseRoster = solution;
        }

        @Override
        public void writeSolution() throws IOException {<FILL_FUNCTION_BODY>}
    }

            Element solutionElement = new Element("Solution");
            document.setRootElement(solutionElement);

            Element schedulingPeriodIDElement = new Element("SchedulingPeriodID");
            schedulingPeriodIDElement.setText(nurseRoster.getCode());
            solutionElement.addContent(schedulingPeriodIDElement);

            Element competitorElement = new Element("Competitor");
            competitorElement.setText("Geoffrey De Smet with OptaPlanner");
            solutionElement.addContent(competitorElement);

            Element softConstraintsPenaltyElement = new Element("SoftConstraintsPenalty");
            softConstraintsPenaltyElement.setText(Integer.toString(nurseRoster.getScore().softScore()));
            solutionElement.addContent(softConstraintsPenaltyElement);

            for (ShiftAssignment shiftAssignment : nurseRoster.getShiftAssignmentList()) {
                Shift shift = shiftAssignment.getShift();
                if (shift != null) {
                    Element assignmentElement = new Element("Assignment");
                    solutionElement.addContent(assignmentElement);

                    Element dateElement = new Element("Date");
                    dateElement.setText(shift.getShiftDate().getDate().format(DateTimeFormatter.ISO_DATE));
                    assignmentElement.addContent(dateElement);

                    Element employeeElement = new Element("Employee");
                    employeeElement.setText(shiftAssignment.getEmployee().getCode());
                    assignmentElement.addContent(employeeElement);

                    Element shiftTypeElement = new Element("ShiftType");
                    shiftTypeElement.setText(shift.getShiftType().getCode());
                    assignmentElement.addContent(shiftTypeElement);
                }
            }
        
<methods>public non-sealed void <init>() ,public abstract XmlOutputBuilder<org.optaplanner.examples.nurserostering.domain.NurseRoster> createXmlOutputBuilder() ,public java.lang.String getOutputFileSuffix() ,public void writeSolution(org.optaplanner.examples.nurserostering.domain.NurseRoster, java.io.File) <variables>protected static final java.lang.String DEFAULT_OUTPUT_FILE_SUFFIX