0 0

命名空间与类如何相互绑定?0

我有两个xsd文件,分别是one.xsd和two.xsd,并且在one.xsd中import了two.xsd,如one.xsd中有如下引用:
<xs:import namespace="urn:test:two" schemaLocation="two.xsd"/>
one.xsd中有个complex type名叫OneType,它依赖two.xsd中的一个complex type.如
<complexType name="OneType">
<sequence>
<element name="two" type="two:TwoType"/>
</sequence>
</complexType>


假如这两个文件是由web service服务器提供的,客户端根据这两个文件生成java代码,指定的包为同一个包名,如com.test.singlepackage,而服务端生成代码时分别为两个文件指定了不同的包名,如com.test.one和com.test.two,这样,客户端代码中是one.setTwo(com.test.singlepackage.Two),而服务端是one.setTwo(com.test.two.Two),这样客户端的代码转换为xml,然后传输到服务端后,能否正确的转换成服务端的代码形式,它是如何做到这一点的?

问题补充:大概知道是如何绑定的了。我们客户端在调用服务端的webservice时,要指定命名空间,可以算作入口命名空间,这样java在生成xml时,会从此入口命名空间开始依次找到各类型的的命名空间。

问题补充:所以即便两边对同样xsd指定包名不同也无所谓。
SOA 
2012年9月09日 09:58

1个答案 按时间排序 按投票排序

0 0

1、XML命名空间 用于避免元素命名冲突的,比如a:user b:user 两个user属于不同的命名空间,请参考
http://www.w3school.com.cn/xml/xml_namespaces.asp

2、xml绑定到Java对象。
   1、首先根据命名空间和元素名找相应的XML数据;
   2、通过反射赋值到Java对象上(如通过Field/Property等)。

XML:是用于描述和交换数据的,是一种文本形式,语言无关;

Java对象---->XML----->Java对象
       a.User------->×××----->b.User
       1 从a.User----->XML 会转化成如<user><id></id></user>
      2、XML----->b.User 可以读取标签 然后解析(此处利用了XML与语言无关做到的,只要符合某些规则即可);

2012年9月09日 10:49

相关推荐

    Struts2.0深入学习 命名空间,模型驱动,表单重复提交

    例如,你可以为不同的模块或功能设置独立的命名空间,如`/admin`、`/user`,这样每个命名空间下的Action都可以有相同的名字而不会相互干扰。此外,命名空间还可以帮助组织和管理应用的URL结构,使URL更具可读性。 *...

    MySQL中的网络命名空间支持.pdf

    - **容器或虚拟网络中的MySQL实例**:这类实例通常运行在一个单独的网络命名空间中,其网络地址空间与主机的地址空间可能不同。这可能导致一些问题,比如客户端连接的源地址对MySQL服务器来说看起来像是来自不同的...

    jQuery 事件的命名空间简单了解

    虽然内部实现对于普通开发者来说是透明的,但是可以推测jQuery内部应当有某种机制来维护事件监听器与命名空间的关系。这可能涉及到内部的数据结构,如哈希表或对象,来存储特定命名空间下的事件处理函数。当调用`....

    WPF中System.Windows.Controls空间所有类的类图

    `System.Windows.Controls`命名空间包含了丰富的控件类,它们构成了WPF应用的基础。为了更好地理解和使用这些控件,通常需要对它们的类结构有清晰的认识。本文将深入探讨`System.Windows.Controls`中的主要类和它们...

    JAVA对象与XML相互转化DEMO

    在实际应用中,可能还需要处理更复杂的XML结构,如命名空间、数组、嵌套对象等。此时,可以通过在Java类中添加更多的注解来指定XML元素的属性,或者使用`@XmlAnyElement`等高级注解处理不确定的XML结构。 在"JAVA...

    对XML数据与JVAV对象之间的相互转换

    3. 命名空间处理:如果XML文档包含命名空间,需要在Java类中适当地处理,例如使用`@XmlSchema(namespace="namespaceURI")`注解。 4. 遍历复杂结构:对于复杂的XML结构,可能需要递归或者循环来创建对应的Java对象。...

    WSDL文件出错???????

    2. **命名空间冲突**:WSDL文件可能引用了多个命名空间,如果这些命名空间的定义不正确或相互冲突,会导致解析错误。确认所有使用的命名空间都有正确的URI,并且在文件中正确声明。 3. **类型定义错误**:WSDL文件...

    Xilium.Cefglue JS与C#相互调用Demo

    在C#端,我们可以注册对象到JavaScript全局命名空间,这样JavaScript代码就可以通过window对象访问这些C#方法和属性。例如: ```csharp var repository = new JavascriptObjectRepository(CefRuntime.Current...

    JAXB与xml相互转换实例

    然而,JAXB也有一些局限性,例如不支持某些复杂的XML特性,如命名空间、属性群组和XML Schema的复杂部分。此外,对于大型项目,生成的Java类可能会变得庞大且难以管理。 总的来说,JAXB是Java开发中处理XML数据的...

    spring-framework-3.2.0.RC2-schema.zip

    它提供了一种将Java对象与XML文档相互转换的能力,支持如JAXB、Castor、XMLBeans等多种绑定技术。在XML Schema中,`oxm`命名空间定义了如 `&lt;marshal&gt;` 和 `&lt;unmarshal&gt;` 操作,方便我们在应用中进行XML数据的序列化...

    Java类库 java中常用的类 可以参考

    - **应用场景**:用于查找和绑定命名空间中的对象。 ##### 14. `javax.swing.*` - **主要功能**:提供了一系列轻量级的用户界面组件,是目前 Java 用户界面常用的包。 - **关键类**: - `JFrame`:用于创建窗口。...

    C++常见问题解答。。。。。。。。。

    可以在命名空间内定义变量、函数、类等。 #### 32. 如何使用命名空间? 要使用命名空间中的成员,可以使用作用域解析运算符`::`,或者使用`using`指令引入整个命名空间或特定成员。 #### 33. `new`、`delete`、`...

    WPF开发教程.doc

    XAML命名空间用于避免命名冲突,映射将XAML命名空间与.NET类型关联。 #### 2.6 WPF名称范围 名称范围用于在XAML中管理和查找元素,尤其是在多个元素需要相互引用时。 ### 3. WPF控件开发 #### 3.1 控件概述 WPF...

    WPF 开发教程( 中文版)

    - **命名空间映射**:详细解释了如何在XAML中使用命名空间映射来引用外部资源。 ##### 2.6 WPF名称范围 - **名称范围的概念**:这部分介绍了WPF中名称范围的基本概念。 - **名称范围的应用**:通过示例展示了如何在...

    wpf相互调用传递参数

    在WPF中,这可以通过System.IO.Pipes命名空间实现。WCF服务则需要配置服务端和服务引用,然后通过服务接口来调用和传递数据。 总结来说,WPF中的相互调用和参数传递可以通过命令行参数、命名管道、WCF服务等多种...

    SendInfo.rar

    在C#中,可以使用System.IO.Pipes命名空间的类来创建和操作命名管道。 2. **内存映射文件**:这种方法通过将一部分硬盘空间映射到多个进程的地址空间来共享数据。C#的MemoryMappedFile类是进行内存映射文件操作的...

    Absolute C++中文版(原书第2版)-完美的C++教程,文档中还包含英文版

    1.5 库与命名空间 24 1.5.1 库与include命令 24 1.5.2 命名空间 25 第2章 流程控制 30 2.1 布尔表达式 30 2.1.1 创建布尔表达式 30 2.1.2 布尔表达式求值 31 2.1.3 优先级原则 33 2.2 分支机制 37 2.2.1 ...

    winform和wpf的相互调用

    2. 修改XAML文件:在XAML文件中,我们需要引入两个命名空间,一个是`System.Windows.Forms.Integration`,用于整合WPF和Winform;另一个是`System.Windows.Forms`,用于访问Winform控件。例如: ```xml xmlns:...

Global site tag (gtag.js) - Google Analytics