【发布时间】:2015-01-29 18:44:56
【问题描述】:
我是 XML 编程的新手,我正在尝试将一些 java 对象写入格式良好且有效的 XML 文件(相对于 DTD 文件),
我发现我可以使用带有 Java 的 JAXP 来做这种事情。 我的应用程序将使用接口检索一些数据,然后我需要根据我之前创建的 DTD 将这些数据写入 XML 文件。
我试图查找有关此操作的一些信息,但失败了。
我应该怎么做这个操作?
编辑:请注意,我需要坚持使用 DTD(不能切换到 XML 模式),并且我需要从 Java 对象到 XML,而不是相反。 我发现重复的答案不适用于我的问题。
不知道 DTD 是否有任何帮助,但在这里。
DTD
<!ELEMENT AIRCRAFTS (AIRCRAFT+)>
<!ELEMENT AIRCRAFT (MODEL, SEATS)>
<!ELEMENT MODEL (#PCDATA)>
<!ELEMENT SEATS (SEAT+)>
<!ELEMENT SEAT (#PCDATA)>
<!ELEMENT FLIGHTS (FLIGHTREADER+)>
<!ELEMENT FLIGHTREADER (DEPARTURE, TIME, DESTINATION)>
<!ELEMENT DEPARTURE (#PCDATA)>
<!ELEMENT TIME (HOUR, MINUTE)>
<!ELEMENT HOUR (#PCDATA)>
<!ELEMENT MINUTE (#PCDATA)>
<!ELEMENT DESTINATION (#PCDATA)>
<!ELEMENT FLIGHTINSTANCES (FLIGHTINSTANCEREADER+)>
<!ELEMENT FLIGHTINSTANCEREADER (AIRCRAFTID, DATE, DELAY, DEPARTUREGATE, FLIGHTREADERID, PASSENGERREADER+, STATUS)>
<!ELEMENT AIRCRAFTID (#PCDATA)>
<!ELEMENT DATE (#PCDATA)>
<!ELEMENT DELAY (#PCDATA)>
<!ELEMENT DEPARTUREGATE (#PCDATA)>
<!ELEMENT FLIGHTREADERID (#PCDATA)>
<!ELEMENT PASSENGERREADER (NAME, FLIGHTINSTANCEID, SEATID, BOARDED)>
<!ELEMENT FLIGHTINSTANCEID (#PCDATA)>
<!ELEMENT BOARDED (#PCDATA)>
<!ELEMENT NAME (#PCDATA)>
<!ELEMENT SEATID (#PCDATA)>
<!ELEMENT STATUS (#PCDATA)>
<!ATTLIST FLIGHTINSTANCEREADER id ID #REQUIRED>
<!ATTLIST FLIGHTREADER id ID #REQUIRED>
<!ATTLIST AIRCRAFT id ID #REQUIRED>
【问题讨论】:
-
这个answer 回答了你的问题。我应该知道,我最近尝试过,它奏效了。
-
感谢您的回答,但我不认为问题是重复的,您链接我的那个没有回答我的问题并且不满足我的限制
-
我提供的答案链接允许您从 DTD 生成 Java 对象(使用
xjc随 JDK 一起在bin文件夹中)。它不会创建 XML 模式,但您仍然可以使用 JAXB 从 Java 对象生成 XML。从 DTD 创建模式可能会令人生畏。 -
首先,再次感谢您的宝贵时间。我需要做的是从一些 java 对象开始生成一个有效的 XML(相对于 DTD)。我不想从 DTD 创建 Java 对象,那不是我的目标。我已经有了 Java 对象,我想使用 JAXP 将它们写到一个有效的 XML 文件中。