是否有Java对象/类的标准XML模式?

时间:2012-09-06 13:24:20

标签: java xml jaxb xsd

是否有可用的标准XML架构描述了Java对象的一般结构和内容?我搜索了这个无济于事。

我对一般的XML和各种基于Java的XML技术(主要是JaxB)都比较陌生,所以如果我忽略了某些东西,请原谅我。

4 个答案:

答案 0 :(得分:3)

简单的答案是没有这样的标准架构。

使用JAXB之类的序列化时,您实际上为绑定的每个类/类网络都有不同的XML模式。


还有几点意见:

  • 可以编写一个能够表示任何类型Java对象的XML模式。你需要一个“对象”元素,它有一个叫做类名的属性,叫做“field”的子元素等等。但由此产生的XML表示将占用更多空间,并且难以阅读和使用。

  • 在JAXB等中,(显然)是类网络和XML结构之间的系统关系,但它不能表示为XML模式。相反,它是一个映射,从概念意义上“从类”生成一个模式。 (实际上,它类似于XMI中发生的事情,其中​​元模型映射到XML模式。)

  • 参照完整性超出了XML模式中可表达的范围,但这并不是没有通用模式的原因。即使您忽略引用完整性并将问题减少为“树形”,您仍然无法为JAXB,XMI和类似映射生成的XML类型生成有用的公共模式。

答案 1 :(得分:1)

它不是官方的Oracle / Sun标准,而是第三方工具JSX,将java对象序列化为xml,并且具有XML Schema specification of its format

example XML显示了它如何记录对象的内部细节,包括字段类型和继承的类。

即使您自己不使用此模式,它也会为您提供一个格式要解决的问题的起点,以便完全表示对象状态。

答案 2 :(得分:0)

XMLSchema文件描述了符合此XMLSchema文件中存储的元素定义的XML文档中可能和不可能的内容。

XMLSchema本身与Java无关:XMLSchema文件仅用于检查符合XMLSchema文件的XML文件的有效性。

Java人员使用XMLSchema文件生成Java源代码,该源代码能够从符合XMLSchema(xjc工具)的XML文件接收数据。

您还可以从一组Java源文件生成XMLSchema文件(使用schemagen工具)。

如果您有以下元素,则可以使用JAXB将Java对象编组到/从XML文件中解组:

  • XMLSchema文件
  • Java源文件
  • XML文件

来自Java的other ways to marshall/unmarshall xml数据。

答案 3 :(得分:0)

假设可以构造一种允许JAX-B或其他序列化库生成的所有可能XML文件的元模式。但是,大多数人都不会发现这样的模式有用,因为它允许如此广泛的XML文档基本上没有用。相反,人们要么从模式开始并生成Java类,要么从特定的java类图开始,并生成一个反映(哈哈)其中特定数据的模式。