// Path: src/main/java/org/mybatis/generator/api/GeneratedXmlFile.java
// public class GeneratedXmlFile extends GeneratedFile {
// 
//     /** The document. */
//     private Document document;
// 
//     /** The file name. */
//     private String fileName;
// 
//     /** The target package. */
//     private String targetPackage;
// 
//     /** The is mergeable. */
//     private boolean isMergeable;
// 
//     /** The xml formatter. */
//     private XmlFormatter xmlFormatter;
// 
//     /**
//      * Instantiates a new generated xml file.
//      *
//      * @param document
//      *            the document
//      * @param fileName
//      *            the file name
//      * @param targetPackage
//      *            the target package
//      * @param targetProject
//      *            the target project
//      * @param isMergeable
//      *            true if the file can be merged by the built in XML file merger.
//      * @param xmlFormatter
//      *            the xml formatter
//      */
//     public GeneratedXmlFile(Document document, String fileName,
//             String targetPackage, String targetProject, boolean isMergeable,
//             XmlFormatter xmlFormatter) {
//         super(targetProject);
//         this.document = document;
//         this.fileName = fileName;
//         this.targetPackage = targetPackage;
//         this.isMergeable = isMergeable;
//         this.xmlFormatter = xmlFormatter;
//     }
// 
//     /* (non-Javadoc)
//      * @see org.mybatis.generator.api.GeneratedFile#getFormattedContent()
//      */
//     @Override
//     public String getFormattedContent() {
//         return xmlFormatter.getFormattedContent(document);
//     }
// 
//     /**
//      * Gets the file name.
//      *
//      * @return Returns the fileName.
//      */
//     @Override
//     public String getFileName() {
//         return fileName;
//     }
// 
//     /**
//      * Gets the target package.
//      *
//      * @return Returns the targetPackage.
//      */
//     @Override
//     public String getTargetPackage() {
//         return targetPackage;
//     }
// 
//     /* (non-Javadoc)
//      * @see org.mybatis.generator.api.GeneratedFile#isMergeable()
//      */
//     @Override
//     public boolean isMergeable() {
//         return isMergeable;
//     }
// 
//     public void setMergeable(boolean isMergeable) {
//         this.isMergeable = isMergeable;
//     }
// }


import static org.mybatis.generator.internal.util.messages.Messages.getString;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.StringReader;
import java.util.ArrayList;
import java.util.List;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import org.mybatis.generator.api.GeneratedXmlFile;
import org.mybatis.generator.config.MergeConstants;
import org.mybatis.generator.exception.ShellException;
import org.w3c.dom.Comment;
import org.w3c.dom.Document;
import org.w3c.dom.DocumentType;
import org.w3c.dom.Element;
import org.w3c.dom.NamedNodeMap;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import org.w3c.dom.Text;
import org.xml.sax.EntityResolver;
import org.xml.sax.InputSource;
import org.xml.sax.SAXException;
/**
 *    Copyright 2006-2017 the original author or authors.
 *
 *    Licensed under the Apache License, Version 2.0 (the "License");
 *    you may not use this file except in compliance with the License.
 *    You may obtain a copy of the License at
 *
 *       http://www.apache.org/licenses/LICENSE-2.0
 *
 *    Unless required by applicable law or agreed to in writing, software
 *    distributed under the License is distributed on an "AS IS" BASIS,
 *    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 *    See the License for the specific language governing permissions and
 *    limitations under the License.
 */
package org.mybatis.generator.internal;





/**
 * This class handles the task of merging changes into an existing XML file.
 * 
 * @author Jeff Butler
 */
public class XmlFileMergerJaxp {
    private static class NullEntityResolver implements EntityResolver {
        /**
         * returns an empty reader. This is done so that the parser doesn't
         * attempt to read a DTD. We don't need that support for the merge and
         * it can cause problems on systems that aren't Internet connected.
         */
        @Override
        public InputSource resolveEntity(String publicId, String systemId)
                throws SAXException, IOException {

            StringReader sr = new StringReader(""); //$NON-NLS-1$

            return new InputSource(sr);
        }
    }

    /**
     * Utility class - no instances allowed
     */
    private XmlFileMergerJaxp() {
        super();
    }

// Path: src/main/java/org/mybatis/generator/api/GeneratedXmlFile.java
// public class GeneratedXmlFile extends GeneratedFile {
// 
//     /** The document. */
//     private Document document;
// 
//     /** The file name. */
//     private String fileName;
// 
//     /** The target package. */
//     private String targetPackage;
// 
//     /** The is mergeable. */
//     private boolean isMergeable;
// 
//     /** The xml formatter. */
//     private XmlFormatter xmlFormatter;
// 
//     /**
//      * Instantiates a new generated xml file.
//      *
//      * @param document
//      *            the document
//      * @param fileName
//      *            the file name
//      * @param targetPackage
//      *            the target package
//      * @param targetProject
//      *            the target project
//      * @param isMergeable
//      *            true if the file can be merged by the built in XML file merger.
//      * @param xmlFormatter
//      *            the xml formatter
//      */
//     public GeneratedXmlFile(Document document, String fileName,
//             String targetPackage, String targetProject, boolean isMergeable,
//             XmlFormatter xmlFormatter) {
//         super(targetProject);
//         this.document = document;
//         this.fileName = fileName;
//         this.targetPackage = targetPackage;
//         this.isMergeable = isMergeable;
//         this.xmlFormatter = xmlFormatter;
//     }
// 
//     /* (non-Javadoc)
//      * @see org.mybatis.generator.api.GeneratedFile#getFormattedContent()
//      */
//     @Override
//     public String getFormattedContent() {
//         return xmlFormatter.getFormattedContent(document);
//     }
// 
//     /**
//      * Gets the file name.
//      *
//      * @return Returns the fileName.
//      */
//     @Override
//     public String getFileName() {
//         return fileName;
//     }
// 
//     /**
//      * Gets the target package.
//      *
//      * @return Returns the targetPackage.
//      */
//     @Override
//     public String getTargetPackage() {
//         return targetPackage;
//     }
// 
//     /* (non-Javadoc)
//      * @see org.mybatis.generator.api.GeneratedFile#isMergeable()
//      */
//     @Override
//     public boolean isMergeable() {
//         return isMergeable;
//     }
// 
//     public void setMergeable(boolean isMergeable) {
//         this.isMergeable = isMergeable;
//     }
// }


// Path: src/main/java/org/mybatis/generator/internal/XmlFileMergerJaxp.java
import static org.mybatis.generator.internal.util.messages.Messages.getString;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.StringReader;
import java.util.ArrayList;
import java.util.List;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import org.mybatis.generator.api.GeneratedXmlFile;
import org.mybatis.generator.config.MergeConstants;
import org.mybatis.generator.exception.ShellException;
import org.w3c.dom.Comment;
import org.w3c.dom.Document;
import org.w3c.dom.DocumentType;
import org.w3c.dom.Element;
import org.w3c.dom.NamedNodeMap;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import org.w3c.dom.Text;
import org.xml.sax.EntityResolver;
import org.xml.sax.InputSource;
import org.xml.sax.SAXException;

/**
 *    Copyright 2006-2017 the original author or authors.
 *
 *    Licensed under the Apache License, Version 2.0 (the "License");
 *    you may not use this file except in compliance with the License.
 *    You may obtain a copy of the License at
 *
 *       http://www.apache.org/licenses/LICENSE-2.0
 *
 *    Unless required by applicable law or agreed to in writing, software
 *    distributed under the License is distributed on an "AS IS" BASIS,
 *    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 *    See the License for the specific language governing permissions and
 *    limitations under the License.
 */
package org.mybatis.generator.internal;





/**
 * This class handles the task of merging changes into an existing XML file.
 * 
 * @author Jeff Butler
 */
public class XmlFileMergerJaxp {
    private static class NullEntityResolver implements EntityResolver {
        /**
         * returns an empty reader. This is done so that the parser doesn't
         * attempt to read a DTD. We don't need that support for the merge and
         * it can cause problems on systems that aren't Internet connected.
         */
        @Override
        public InputSource resolveEntity(String publicId, String systemId)
                throws SAXException, IOException {

            StringReader sr = new StringReader(""); //$NON-NLS-1$

            return new InputSource(sr);
        }
    }

    /**
     * Utility class - no instances allowed
     */
    private XmlFileMergerJaxp() {
        super();
    }

    public static String getMergedSource(GeneratedXmlFile generatedXmlFile,