我正在使用xml文件(進行驗證)。在計算整個文件的CRC32函數之前,我需要編輯一些屬性。 我使用DOM解析器和xPath。 我已經編輯我的文件後,我將其轉換爲字節數組的CRC-功能:Java編輯xml文件(保存屬性順序)
Node file_crc = (Node) xPath.compile("/IODevice/Stamp/@crc").evaluate(doc, XPathConstants.NODE);
file_crc.setTextContent("");
bos = new ByteArrayOutputStream();
result = new StreamResult(bos);
try {
transformer.transform(new DOMSource(doc), result);
crc.reset();
crc.update(bos.toByteArray());
} catch (TransformerException ex) {
return false;
}
麻煩的是,DOM解析器變化的xml文件屬性順序(alphabeticaly對其進行排序) - 這會導致無效的校驗的文件。 如何避免屬性順序突變?
這不是我決定使用這樣的機制)我只需要解決這個問題。 – Constantine 2014-11-01 04:57:17
@KostyaKrivomaz如何將原始文件解析爲DOM表示並將其序列化而不更改任何內容?然後,屬性可能按字典順序排列,您可以使用該中間文件作爲校驗和。 – 2014-11-01 14:32:58