我正在用 Java 编写一个使用 prefuse 库的程序。该程序根据从 twitter 收集的信息生成图表。我正在尝试让我的程序保存生成的图表,以便稍后我可以加载它们。
prefuse 类 GraphMLWriter 工作正常,它生成一个以 UTF-8 和 xml 版本编码的 graphml:1.0。
当我想加载生成的 graphml 文件时出现我的问题。为此,我使用类 GraphMLReader 的方法 readGraph(InputStream is)。此方法返回一个 Graph 对象并使用 SaxParser 解析带有 GraphMLHandler 类的处理程序对象的 graphml 文件。该对象将图形构造为解析器解析 xml 文件的所有行。当 xml 文件包含“á”或“ñ”等字符或表情符号时,我收到 prefuse.data.io.DataIOException 引发的 SAXParseException。生成的所有 xml 文件都包含表示推文的字符串。
一个例子是:
<data key="info">Las extraño muchooooo a ambas! ��</data>
错误说:
线程“主”prefuse.data.io.DataIOException 中的异常:>org.xml.sax.SAXParseException;行号:165;列号:67;字符引用 "
仅此而已,似乎错误消息已被剪切。
这些是我用来将图形对象“g”保存到 GraphML 中的代码,称为“已保存的图形”:
(new GraphMLWriter()).writeGraph(graph, "Graph saved");
这是我用来将图形加载到从名为“Graph saved”的GraphML文件生成的图形“g2”中的一个
Graph g2 = (new GraphMLReader().readGraph("Graph saved"));
我能做些什么来解决这个问题?