c# - Java 和 .NET 流通过 IKVM 的互操作性

标签 c# java xml stream ikvm

在我当前的项目中,我使用 IKVM 交叉编译多个处理 XML 各个方面的 Java 库。然后将这些库与几个 .NET 库和我的主线代码集成。一切正常,但我怀疑存在一些低效之处,尤其是在基于流的数据访问领域。

许多 Java 库可以接受流式 SAX 类或其他流式对象,如 OutputStream 等。在某些情况下,我可以将适当的 Java 类包装在一个对应的 .NET 子类中,以弥合差距并在两者之间提供无缝流式传输语言。例如,创建一个派生自 .NET MemoryStream 和 Java OutputStream 的类。然而,在大多数情况下,接口(interface)具有挑战性,我只能传递整个字符串 - 即使我在 .NET 端有可用的流并且 Java 端接受(不同的)流类(反之亦然)。

总的来说,我的问题是是否有人遇到过使用流将数据传入/传出 IKVM 编译库的类似问题,这些问题是如何解决或缓解的?是否存在任何第三方解决方案来帮助弥合这一差距?例如,为 .NET XmlReader 和/或 XmlWriter 提供 Java SAX 包装器的代码将非常有用。

最佳答案

我在Saxon中为这种事情做了一些桥接类(class)。 .它是开源的,因此您可以重复使用任何您认为有用的东西。如果您以 Saxon 使用它们的方式以外的方式使用它们,我不保证它们是完整和正确的。

DotNetInputStream将 .NET 流映射到 Java InputStream。

DotNetOutputStream将 .NET 流映射到 Java OutputStream。

DotNetReader将 .NET TextReader 映射到 Java Reader。

DotNetWriter将 .NET TextWriter 映射到 Java Writer。

对于 XML 流,Saxon 有自己的内部推/拉接口(interface)(分别为 Receiver 和 PullProvider),并且有一些类将这两者映射到/从相应的 Java 和 .NET 接口(interface)。

关于c# - Java 和 .NET 流通过 IKVM 的互操作性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6587713/

相关文章:

c# - 为什么 Silverlight View 不抛出 null 异常?

xml - 如何使用 xmllint --xpath 在每次匹配后附加换行符

java - 如何使用 XPath 检查 XML 中是否存在元素?

c# - ASP.NET Core 中的 MD5CryptoServiceProvider

c# - 在 C# 中检查整数是否为 2 的幂

c# - 为操作设置超时

java - hibernate -CDI

java - 集成 twitter4j 和 Coldfusion 以发布推文并将图像上传到已发布的推文

java - 删除元素时 ArrayList hasNext 的行为

ios - 从 XML Parse 匹配 NSDictionary