2013-09-24 2 views
0

Я работаю на стандарте XML, который требует, чтобы следующий корневой элемент должен быть определен:Аннотация схемы XML в Java

<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. Обычно я аннотирую каждый класс и , тогда я использую маршаллов и маркеров и пишущих/читаю действительные файлы xml.

«Моя идея» была аннотировать package-info.java указать xsi:schemaLocation, xmlns и xmlns: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:

package foo;  

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

И, наконец, то, что я получаю с ИАС:

<?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 f ile по трем свойствам, показанным выше. Есть идеи?

+0

вы пробовали [XStream] (xstream.codehaus.org) до сих пор? – MKorsch

+0

На самом деле я этого не делал! Считаете ли вы, что это лучше? –

+0

Чтобы сериализовать и десериализовать объекты в xml и наоборот, я не знаю каких-либо фреймворков, которые делают это лучше. Кроме того, он очень прост в использовании. Просто попробуйте! Вы увидите на веб-сайте, соответствует ли оно вашим требованиям или нет. – MKorsch

ответ

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.

Это работает, но мне оно не нравится! Я хотел бы использовать аннотацию на уровне пакета.

0

Поддержка аннотаций - это только начало требований к чтению и записи документов CDA. Я бы рекомендовал использовать проект MDHT с открытым исходным кодом с API для создания, использования и проверки документов CDA.

Вы можете найти проект здесь https://www.projects.openhealthtools.org/sf/projects/mdht/

+0

Mhhh! Аннотации не требуются _di per se_ для реализации CDA. Это всего лишь метод реализации. MDHT использует проприетарный формат и поддерживает только преобразование в/из cda2. –

+0

Да MDHT в настоящее время поддерживает только CDA R2, но MDHT - проект с открытым исходным кодом и никоим образом не использует какой-либо проприетарный формат – user2418114

Смежные вопросы