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

标签 java xml stax

我正在使用 StaX XMLEventReaderXMLEventWriter。 我需要对保存在字节数组中的原始 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>

为什么他要加上结束标签? Source 中也没有。

最佳答案

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

关于java - 如何克隆 xml 文件(完全相同的副本),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26687909/

相关文章:

java - 在android studio中计算GPA

xml - 使用 nant 将属性添加到 xml 节点

java - 快速排序的错误实现

Java minmax 算法返回空移动并且无法正确撤消移动

java - 通过 org.w3c.dom API 公开 JAXB 注解的对象

java - 应该如何以及使用什么注释来修改 POJO 以获得所需的 XML

java - 如何在 JAVA 中使用 STAX 解析器读取标签内的值

java - 如何在java中解析XML以使用STAX将值保存在数据库中?

java - 热图仅按值加权,而不按浓度加权

c# - 如何使用 MvcContrib 的 XmlResult 生成带有属性而不是节点的 XML?