docs: public StringBuffer marshal() throws MarshalException {
  		
  		if (this.config == null && this.targetObj != null) {
  			
  			// 初始化解析器
  			this.parser.init();
  			
  			Class<?> rootClass = targetObj.getClass();
  			String tag = nodeTag;
  
  			if (StringUtils.isEmpty(tag)) {
  				if (targetObj instanceof Map) {
  					tag = (String) ((Map<?, ?>) targetObj).get(Constant.NODE_TAG);
  					tag = tag == null ? Constant.ROOT_TAG : tag;
  				} else if (targetObj instanceof List) {
  					tag = "list";
  				} else if (rootClass.isAnnotationPresent(Root.class)) {
  					Root root = (Root) rootClass.getAnnotation(Root.class);
  					tag = root.name();
  				}
  			}
  
  			if (StringUtils.isEmpty(tag)) {
  				tag = Constant.ROOT_TAG;
  			}
  			this.config = this.parser.parse(tag, targetObj);
  		}
  		
  		if (this.config == null) {
  			throw new MarshalException("Object is null");
  		}
  
  		if (domMode) {
  			return marshalByJDom();
  		} else {
  			return marshalByString();
  		}
  	}