有没有其他人看到Java XML FastInfoset库损坏文本?

时间:2010-12-30 14:35:07

标签: java fastinfoset

我阅读了太阳人关于美妙的太空经济的说法,不仅使用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

我很容易想象创建序列化词汇表的方法不对,它不像我在阅读教程。有人碰巧知道吗?

更新

由于此处没有任何人可以添加任何内容,我会做一个测试用例并提交错误报告。令我惊讶的是,事实证明它实际上是一个错误,并且已经修复了。

0 个答案:

没有答案