public String toXMLString() {
		
		// %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
		// Implement this method.  Hint: You will need to do a
		// combination of pre-Order and post-Order. That is, at each
		// level you will need to call the label's "preString()"
		// method before any recursive calls and then call the
		// label's "postString()" method afterward. preString() and
		// postString() have already been implemented for you in
		// FileNode.java.
		//
		// IMPORTANT: make sure you use indenting, increasing the
		// indent by 3 at each new level. You may use a helper method.
		// %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
		// Hint: Return a string that starts with the following:
		String header = "<?xml version=\"1.0\" encoding=\"ISO-8859-1\"?>";
		
		if(parent == null){
			//clear stringBuilder
			stringBuilder.delete(0, stringBuilder.length());
			//set indent back to 0
			indent = 0;
			//begin with the header
			stringBuilder.append(header);
		}
		//set indent to 3 spaces
		stringBuilder.append("\n");
		for(int i=0; i< indent ; i++){
			stringBuilder.append("   ");
		}
		//add the root label
		stringBuilder.append(label.preString());
		//increase indent by 3 spaces
		indent++;
		
		Tree<T> N = firstChild;
		//while there is a child
		while(N!= null){
			//call recursively
			N.toXMLString();	
			//if N is not a leaf
			if(!N.Leaf()){
				//new line, decrease indent, and add the postString
				indent--;
				stringBuilder.append("\n");
				for(int i=0; i< indent ; i++){
					stringBuilder.append("   ");
				}
				stringBuilder.append(N.label.postString());
			}
			else{
				//if N is a leaf, add the post string to the same line
				indent--;
				stringBuilder.append(N.label.postString());
			}
			//continue to traverse by setting N to next sibling and calling the while loop
			N = N.getNextSibling();
		
		}
		//loop ends return the stringBuilder in string form
		//append new line and the last postString
		return (stringBuilder.toString()+ "\n" + label.postString());
	}