如何克隆xml文件(完全相同的副本)

时间:2014-11-01 09:34:38

标签: java xml stax

使用StaX XMLEventReader XMLEventWriter 。 我需要修改保存在字节数组中的原始xml文件的修改时间副本。如果我这样做(用于调试,写入文件):

public boolean isCrcCorrect(Path path) throws IOException, XPathExpressionException {
    ByteArrayOutputStream output = new ByteArrayOutputStream();
    XMLEventFactory  eventFactory = XMLEventFactory.newInstance();
    XMLEventReader reader = null;
    XMLEventWriter writer = null;

    StreamResult result;
    String tagContent;

    if (!fileData.currentFilePath.equals(path.toString())) {
        parseFile(path);
    }

    try {
        System.out.println(path.toString());
        reader = XMLInputFactory.newInstance().createXMLEventReader(new    FileReader(path.toString()));
        //writer = XMLOutputFactory.newInstance().createXMLEventWriter(output);
        writer = XMLOutputFactory.newInstance().createXMLEventWriter(new FileWriter("f:\\Projects\\iqpdct\\iqpdct-domain\\src\\main\\java\\de\\iq2dev\\domain\\util\\debug.xml"));

        writer.add(reader);
        writer.close();
    } catch(XMLStreamException strEx) {
        System.out.println(strEx.getMessage());
    }

    crc.reset();
    crc.update(output.toByteArray());
    System.out.println(crc.getValue());
    //return fileData.file_crc == crc.getValue();
    return false;
}

克隆与原产地不同 来源:

<VendorText textId="T_VendorText" />

克隆:

<VendorText textId="T_VendorText"></VendorText>

他为什么要贴上结束标签?源中没有。

1 个答案:

答案 0 :(得分:2)

如果您想要恰好是XML文档的字节流的精确副本,则必须将其复制为字节流。您无法通过提供XML解析器的后端来复制它,因为解析器前端的目的将您的代码与可能不同但在语义上等效的功能隔离开来。例如,在您的情况下,两个用于指示空元素的方法。