【发布时间】:2016-12-13 05:35:12
【问题描述】:
我正在用 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");
这些是我用来将图形加载到图形“g2”中的一个,该图形由名为“Graph saved”的 GraphML 文件生成
Graph g2 = (new GraphMLReader().readGraph("Graph saved"));
我可以做些什么来解决这个问题?
【问题讨论】:
-
'á' 或 'ñ' (= ñ) 这样的字符在我测试时似乎有效。 导致 SAX 出现问题(不是 prefuse)。
-
是的,你是对的,我没有注意到这一点。谢谢。当我生成图表时(恢复 Twitter 信息),我用 JPopUpMenu 显示推文,它可以识别表情符号。那么如何将表情符号放在graphML文件中,以便稍后在加载图形时显示它?
标签: xml utf-8 saxparser invalid-characters prefuse