虽然有大量关于XML文档结构的文档,但很少有关于如何管理非文本数据(例如整数和十进制数,布尔值)的链接。
有合并标准吗?可以告诉我一个很好的起点吗?
POST SCRIPT
我添加一个例子,因为这个问题实际上太通用了。
我已经定义了一个文档结构:
<rectangle>
<width>12.45</width>
<height>23.34</heigth>
<rounded_corners>true</rounded_corners>
</rectangle>
由于我使用的是DOM,因此API面向文本数据。说doc
是Document
的实例。 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更有用。
答案 0 :(得分:2)
当然,有许多与核心XML相关的官方标准。一些重要的:
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));