java - 使用 FileInputStream(对于 Java)读取 XML 文件?

标签 java xml serialization fileinputstream

对于我的项目,我必须使用 Java 和 XStream 对随机树进行序列化和反序列化。我的老师制作了 Tree/RandomTree 算法,所以我不必担心。我不知道该怎么做:我正在使用 FileInputStream 读取/写入我序列化和反序列化的 xml 文件,但是当我反序列化时,我不知道用于读取文件的方法。读取文件后,我应该能够将其从 XML 转换,然后将其作为字符串打印出来。这是我到目前为止所拥有的。 (我正确导入了所有内容,只是没有将其添加到我的代码段)。

FileInputStream fin;        
    
try
{
    // Open an input stream
    fin = new FileInputStream ("/Users/Pat/programs/randomtree.xml");

    //I don't know what to put below this, to read FileInpuStream object fin

    String dexml = (String)xstream.fromXML(fin);

    System.out.println(dexml);
        
    // Close our input stream
    fin.close();    
        
    
    System.out.println(dexml);
        
    // Close our input stream
    fin.close();        
}
// Catches any error conditions
catch (IOException e)
{
    System.err.println ("Unable to read from file");
    System.exit(-1);
}

    
    

编辑:我想通了;我不认为我必须将它打印为字符串,我只需要制作一个基准测试框架来计时等等,但再次感谢!

最佳答案

xstream.fromXML() 方法将为您读取输入流。我认为问题在于您将 xstream.fromXML(fin) 的返回值强制转换为字符串,而当它应该被强制转换为您最初序列化的对象类型时(RandomTree 我假设)。所以代码看起来像这样:

RandomTree tree = (RandomTree)xstream.fromXML(fin);

编辑:在评论中澄清后,作者的目标是首先读入一个字符串,以便在反序列化之前打印 XML 内容。考虑到这个目标,我建议看一下 this thread 中提到的 IOUtils 库。

关于java - 使用 FileInputStream(对于 Java)读取 XML 文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/361570/

相关文章:

java - if 条件太多 Java

java - 如何解析类型定义为 XSD :any 的 XML

java - java中的xml到json转换问题,第一个前导零从字符串中丢弃

python - 使用常规编码器使对象 JSON 可序列化

Java SWT 文件保存

java - LWJGL Display.set宽度/高度?

java - 如何使用 Bloblstore API 更改上传到 GCS 的文件的名称

java - 如何从 Java 中的 XML 字符串中排除标签

c# - 使用 IEnumerables 序列化类 - 与 Enyim Memcached 一起使用

java - 是否可以使用多个 "root"元素将多个 Java 类对象序列化到单个 XML 文件中?