使用DOM4J在createCopy中保留或添加xsd:schema中的默认命名空间

时间:2014-05-13 09:41:18

标签: java xml xsd dom4j

在将DOM Tree从一个文档复制到另一个文档时,我想将xmlns=""节点从原始文档保留到新文档中。

但是,当我使用xsd:schema DOM4J时,会将其排除在外。

原始文件包含。

createCopy()

复制后,新文档包含:

<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">

有关如何创建原始文档树的精确副本的任何解决方案都会很棒。

代码示例:

<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata" id="root">

1 个答案:

答案 0 :(得分:0)

HY, 对于copy un document xml,你可以使用.clone(),这是一个例子:

public static void copyDocument() {

    //read document
    Document documentOld = getDocument("C:\\test\\test.xml");

    if (documentOld != null) {
        Element elRoot = documentOld.getRootElement();

        Element elRootCopy = (Element) elRoot.clone();

        Document documentNew = DocumentHelper.createDocument();

        documentNew.add(elRootCopy);

        //save the new document
    }
    else {
        System.out.println("document not found or document is not well format ");
    }

}

public static Document getDocument(String pathname) {

    Document document = null;

    SAXReader saxReader = null;

    try {

        saxReader = new SAXReader();

        document = saxReader.read(new File(pathname));
    }
    catch (DocumentException e) {

        e.printStackTrace();
    }

    return document;
}