XML数据类型规范

时间:2011-09-24 12:35:17

标签: java xml

虽然有大量关于XML文档结构的文档,但很少有关于如何管理非文本数据(例如整数和十进制数,布尔值)的链接。
有合并标准吗?可以告诉我一个很好的起点吗? POST SCRIPT
我添加一个例子,因为这个问题实际上太通用了。

我已经定义了一个文档结构:

<rectangle>
  <width>12.45</width>
  <height>23.34</heigth>
  <rounded_corners>true</rounded_corners>
</rectangle>

由于我使用的是DOM,因此API面向文本数据。说docDocument的实例。 doc.createTextNode("takes a string")。那就是:API不会强迫特定的代表。
因此出现了两个问题:
1)保存bolean true为'true'而不是uhm,1/0是标准的?
2)我必须定义从这个字符串表示中编写和解析的简单方法。例。我可以使用java包装器来执行此转换:

Float f = 23.34;
doc.createTextNode(f.toString());

但是它是否符合十进制数的xml标准?如果是这样,我可以说非java程序可以读取这些数据,因为数据表示是xml。
为什么不jaxb
这只是一个例子,我的xml由一个大的数据树组成,我只需要编写和读取它的一小部分,所以JAXB似乎不太适合。绑定体系结构倾向于在xml结构和类结构之间建立紧密的协作。像moxy这样的好实现让你放松了这种耦合,但是有两种结构根本不匹配的情况。在这些情况下,用于调整它们的DTO比使用DOM更有用。

2 个答案:

答案 0 :(得分:2)

当然,有许多与核心XML相关的官方标准。一些重要的:

  1. XML schema 1.1 overview
  2. XML schema 1.1 - datatypes ('XSD')
  3. XML schema 1.1 - structures
  4. Core XML overview
  5. XML 1.0
  6. XML 1.1
  7. www.w3.org/standards/xml/提供了像XPath,XQuery这样的进一步规范。当您使用java标记此问题时,您可能也对JAXB感兴趣,它定义了将XML映射到Java的标准方法,反之亦然。

答案 1 :(得分:1)

您可以利用javax.xml.bind.DatatypeConverter类将简单Java类型转换为符合XML Schema规范的String:

Float f = 23.34f;
doc.createTextNode(DatatypeConverter.printFloat(f));