首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >用Java语言解析从Java服务返回的.NET DataSet

用Java语言解析从Java服务返回的.NET DataSet
EN

Stack Overflow用户
提问于 2010-04-19 21:17:11
回答 3查看 10.8K关注 0票数 17

我必须从.NET应用程序中使用Java托管的web服务。两者之间的互操作性通常非常好。我遇到的问题是,.NET应用程序开发人员选择使用.NET DataSet对象公开数据。有很多文章写了为什么你不应该这样做,以及它如何使互操作性变得困难:

我的问题是,尽管这不是推荐的做法,但我不得不使用返回DataSet的web服务。当你用.NET之外的任何东西为这类东西生成一个代理时,你基本上会得到一个如下所示的对象:

    @XmlElement(namespace = "http://www.w3.org/2001/XMLSchema", required = true)
    protected Schema schema;
    @XmlAnyElement(lax = true)
    protected Object any;

第一个字段是应该描述DataSet的实际模式。当我在Java中使用JAX-WS和JAXB处理它时,它将所有XS-Schema作为Java对象引入,并在这里表示。遍历JAXB的对象树是可能的,但并不美观。any字段表示由模式指定的模式中的DataSet的原始XML。

数据集的结构非常一致,但数据类型确实发生了变化。我需要访问类型信息,而模式在不同的调用中是不同的。我想了几个选择,但似乎没有一个是“好”的选择。

JAXB试图在运行时使用从模式生成

  • 对象似乎不是一个好主意。这太慢了,因为它需要使用JAX-WS引入的JAXB对象强制遍历模式树。
  • 也许不使用JAXB解析模式,而是将其作为XML处理,并使用XPath尝试找到我需要的类型信息。

有没有其他我没有考虑过的选择?有没有Java库可以方便地解析DataSet对象?其他可能有类似情况的人做过什么?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2010-04-25 07:11:48

不幸的是,我不认为这里有一个简单的答案。我要做的是在.NET中创建一个代理web服务,您可以从Java中调用它来接收数据集,将其转换为更易用的东西,然后将其返回给您的Java代码。

票数 9
EN

Stack Overflow用户

发布于 2010-04-25 08:20:58

您的Java应用程序是否在服务器上运行?如果是这样的话,在服务器上安装Mono,并使用内置到Mono中的ADO.NET将数据集转换为ADO.NET可以理解的东西。优点是所有数据集的解释都是在Mono中完成的。您甚至可以使用IKVM停留在Java语言世界中。无论如何,在Mono世界中,您可以有一个本地服务来执行转换,或者简单地使用一个实用程序将数据集转换为Java可以理解的格式的文件系统。

票数 3
EN

Stack Overflow用户

发布于 2010-04-29 22:09:52

您是否考虑过对返回的原始XML使用XSLT,以便将其转换为更容易处理的内容?

我使用这种方法将复杂的返回值转换为类似于

<ops>
  <set name="foo" value="bar"/>
  <set name="foo2" value="bar2" />
  ....
 </ops>

这将把逻辑转换成一种非常适合处理XML的语言,而不是用Java手工编码。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2667646

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档