我必须将带坐标的文本文件转换为xml文件。但是将文本文件转换为xml文件的目的是使文件大小更小。如何减小文件的大小?
public void writeXML() throws Exception
{
ArrayList<Frame> frameList = new ArrayList<Frame>();
frameList = readFile();
DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder dBuilder;
try
{
dBuilder = dbFactory.newDocumentBuilder();
Document doc = dBuilder.newDocument();
// append stuff
TransformerFactory transformerFactory = TransformerFactory.newInstance();
Transformer transformer = transformerFactory.newTransformer();
//transformer.setOutputProperty(OutputKeys.INDENT, "yes");
DOMSource source = new DOMSource(doc);
StreamResult console = new StreamResult(System.out);
StreamResult file = new StreamResult(new File("file.xml"));
//transformer.transform(source, console);
transformer.transform(source, file);
System.out.println("DONE");
}
catch (Exception e)
{
e.printStackTrace();
}
}
答案 0 :(得分:2)
但是将文本文件转换为xml文件的目的是使文件大小更小。
这可能无法实现。 XML的密度低于典型的文本表示,因为正确设计的XML会增加大量的标记&#34;到文件。
由适当设计的文本形式(例如CSV)中的坐标组成的文件所占用的空间将少于XML中表示的相同坐标。
如果你想要&#34;更密集&#34;文件而不是自定义文本格式:
考虑压缩文本文件,或
考虑使用二进制表示而不是文本。
如果您坚持使用XML的想法,那么减小文件大小的最佳方法是压缩它。鉴于XML中存在大量冗余(例如标记),您应该获得显着的压缩。