我阅读了太阳人关于美妙的太空经济的说法,不仅使用FastInfoSet,而且还使用外部词汇。用于此目的的代码包含在最新版本(1.2.8)中,但并未完全记录。
对于许多文件,这对我来说非常有用。但是,我们已经提出了一个XML文件,当使用我创建的词汇(使用FI库中的生成器)从DOM序列化时,然后读回DOM,不匹配。不匹配都在PC数据中。
我只是在序列化程序上调用setVocabulary,使用从URI到读者的词汇表的setExternalVocabulary调用。
我不得不发明自己的机制来实际序列化词汇;在FI库中似乎没有任何一个。
一个小小的业务是org.jvnet.fastinfoset.Vocabulary类是生成器为你提供的,但它不是解析器和序列化器所吃的东西。我安排序列化这些,然后使用下面的代码将它们变成所需的对象:
private static void initializeAnalysis() {
InputStream is = FastInfosetUtils.class.getResourceAsStream(ANALYSIS_VOCAB_CLASSPATH);
try {
ObjectInputStream ois = new ObjectInputStream(is);
analysisJvnetVocab = (SerializableVocabulary) ois.readObject();
ois.close();
} catch (IOException e) {
throw new RuntimeException(e);
} catch (ClassNotFoundException e) {
throw new RuntimeException(e);
}
analysisSerializerVocab = new SerializerVocabulary(analysisJvnetVocab.getVocabulary(), false);
analysisParserVocab = new ParserVocabulary(analysisJvnetVocab.getVocabulary());
}
然后,实际写一个文件:
SerializerVocabulary fullVocab = new SerializerVocabulary();
fullVocab.setExternalVocabulary(ANALYSIS_VOCAB_URI, analysisSerializerVocab, false);
// pass fullVocab to setVocabulary.
并阅读:
Map<Object, Object> vocabMap = new HashMap<Object, Object>();
vocabMap.put(ANALYSIS_VOCAB_URI, analysisParserVocab);
// pass map into setExternalVocabulary
我很容易想象创建序列化词汇表的方法不对,它不像我在阅读教程。有人碰巧知道吗?
更新
由于此处没有任何人可以添加任何内容,我会做一个测试用例并提交错误报告。令我惊讶的是,事实证明它实际上是一个错误,并且已经修复了。