0

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

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

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

“我的想法”是注释以package-info.java指定xsi:schemaLocation,xmlnsxmlns:xsi propertiesClinicalDocument但是,我只能插入最后一个属性 ( 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

package foo;    

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

最后是我从 Marshaller 中得到的:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ClinicalDocument xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ns3="urn:hl7-org:v3">
...
</ClinicalDocument>

所以,我必须在上面显示的三个属性下创建和读取有效的 xml 文件。任何想法?

4

2 回答 2

0

支持注释只是读取和写入 CDA 文档要求的开始——我建议使用 MDHT,一个带有 API 的开源项目来创建、使用和验证 CDA 文档。

你可以在这里找到项目 https://www.projects.openhealthtools.org/sf/projects/mdht/

于 2013-09-24T14:45:16.137 回答
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上。

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

于 2013-09-24T14:34:55.713 回答