Java中XML模式的注释

时间:2013-09-24 13:40:32

标签: java xml xsd jaxb2

我正在制定一个xml标准,要求必须定义以下根元素:

<ClinicalDocument xsi:schemaLocation=”urn:hl7 org:v3 CDA.xsd” xmlns=”urn:hl7-
org:v3” xmlns:xsi=”http://www.w3.org/2001/XMLSchema-instance”>

现在,我正在使用java.xml.bind。通常我会对每个类进行注释,然后然后我使用Marshallers和Unmarshallers来编写/读取有效的xml文件

“我的想法”是注释package-info.java以指定xsi:schemaLocation的{​​{1}},xmlnsxmlns:xsi properties。但是,我只能插入最后一个属性(ClinicalDocument),而我不知道如何渲染第一个属性,而第二个属性则呈现为xmlns:xsi

以下是xmlns:ns3中的代码:

package-info.java

以下是我在@javax.xml.bind.annotation.XmlSchema ( xmlns = { @javax.xml.bind.annotation.XmlNs(prefix="", namespaceURI="urn:hl7-org:v3"), @javax.xml.bind.annotation.XmlNs(prefix="xsi", namespaceURI="http://www.w3.org/2001/XMLSchema-instance") } ) package foo; 包中的课程ClinicalDocument.java

foo

最后是我与Marshaller的关系:

package foo;    

@XmlRootElement(name="ClinicalDocument")
public class ClinicalDocument {....}

因此,我必须在上面显示的三个属性下创建和读取有效的xml文件。有什么想法吗?

2 个答案:

答案 0 :(得分:0)

我找到的唯一有效解决方案是添加:

@XmlAttribute(name="xsi:schemaLocation")
protected final String xsi_schemaLocation="urn:hl7 org:v3 CDA.xsd"; 

@XmlAttribute(name="xmlns")
protected final String xmlns="urn:hl7-org:v3"; 

@XmlAttribute(name="xmlns:xsi")
protected final String xmlns_xsi="http://www.w3.org/2001/XMLSchema instance"; 
课程ClinicalDocument中的

它有效,但我不喜欢它!我想在包级别使用注释。

答案 1 :(得分:0)

支持注释只是阅读和编写CDA文档要求的开始 - 我建议使用MDHT,带有API的开源项目来创建,使用和验证CDA文档。

您可以在此处找到该项目 https://www.projects.openhealthtools.org/sf/projects/mdht/