code: public static void save(final AnnotationMappingInfo xmlInfo, final File file, final String encoding) throws XmlOperateException {
          ArgUtils.notNull(xmlInfo, "xmlInfo");
          ArgUtils.notNull(file, "file");
          ArgUtils.notEmpty(encoding, "encoding");
          
          final Marshaller marshaller;
          try {
              JAXBContext context = JAXBContext.newInstance(xmlInfo.getClass());
              marshaller = context.createMarshaller();
              marshaller.setProperty(Marshaller.JAXB_ENCODING, encoding);
              marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);
              
          } catch (JAXBException e) {
              throw new XmlOperateException("fail setting JAXB context.", e);
          }
          
          File dir = file.getParentFile();
          if(dir != null && !dir.exists()) {
              dir.mkdirs();
          }
          
          try(Writer writer = new OutputStreamWriter(new FileOutputStream(file), encoding)) {
              
              marshaller.marshal(xmlInfo, writer);
              
          } catch(JAXBException | IOException e) {
              throw new XmlOperateException(String.format("fail save xml file '%s'.", file.getPath()), e);
          }
          
      }
docs: XMLをファイルに保存する。
  @since 1.1
  @param xmlInfo XML情報。
  @param file 書き込み先
  @param encoding ファイルの文字コード。
  @throws XmlOperateException XMLの書き込みに失敗した場合。
  @throws IllegalArgumentException xmlInfo is null.
  @throws IllegalArgumentException file is null or encoding is empty.