2015-10-29 4 views
-1

Я очень новичок в Java. У меня есть xsd, и мне нужно создать xml на основе xsd. Я видел, что мы можем использовать JAXB для работы. Но я видел примеры xml, которые просты по своей природе. У меня есть образец xsd, как показано ниже, который мне нужно преобразовать в xml.Создание XML из XSD с использованием Java

<?xml version="1.0" encoding="UTF-8" standalone="no"?> 
    <xs:schema xmlns:addml="http://www.arkivverket.no/standarder/addml" 
     xmlns:xs="http://www.w3.org/2001/XMLSchema" 
     targetNamespace="http://www.arkivverket.no/standarder/addml" elementFormDefault="qualified" 
     version="8.2"> 
     <xs:annotation> 
     <xs:documentation xml:lang="en"> 
      Changes made in versions up to 8.2 are not documented in this document. 
      Updated 2014-08-15 and 2014-09-29, Terje Pettersen-Dahl: 
      Version 8.3: 
      1. Element reference in dataset made optional. 
      2. Optional possibility for header-lines. 
      3. FieldDefinitionReference made unique within an instance. 
      4. Created this documentation section. 

     </xs:documentation> 
     </xs:annotation> 
     <xs:element name="addml"> 
     <xs:complexType> 
      <xs:sequence> 
      <xs:element ref="addml:objectStore" maxOccurs="1"/> 
      </xs:sequence> 
     </xs:complexType> 
     </xs:element> 
     <xs:element name="objectStore"> 
     <xs:complexType> 
      <xs:sequence> 
      <xs:element ref="addml:folder" minOccurs="0"/> 
      </xs:sequence> 
     </xs:complexType> 
     </xs:element> 
     <xs:element name="folder"> 
     <xs:complexType> 
      <xs:sequence> 
      <xs:element ref="addml:folderProperties" minOccurs="0"/> 
      <xs:element ref="addml:documents" minOccurs="0"/> 
      </xs:sequence> 
     </xs:complexType> 
     </xs:element> 
     <xs:element name="documents"> 
     <xs:complexType> 
      <xs:sequence> 
      <xs:element name="document" maxOccurs="unbounded" minOccurs="2"> 
       <xs:complexType> 
       <xs:sequence> 
        <xs:element ref="addml:docProperties"/> 
       </xs:sequence> 
       </xs:complexType> 
      </xs:element> 
      </xs:sequence> 
     </xs:complexType> 
     </xs:element> 
     <xs:element name="docProperties"> 
     <xs:complexType> 
      <xs:sequence> 
      <xs:element name="documentId" type="xs:string"/> 
      <xs:element name="documentTitle" type="xs:string"/> 
      <xs:element name="dateCreated" type="xs:string"/> 
      </xs:sequence> 
     </xs:complexType> 
     </xs:element> 
     <xs:element name="folderProperties"> 
     <xs:complexType> 
      <xs:sequence> 
      <xs:element name="documentId" type="xs:string"/> 
      <xs:element name="documentTitle" type="xs:string"/> 
      <xs:element name="dateCreated" type="xs:string"/> 
      </xs:sequence> 
     </xs:complexType> 
     </xs:element> 
    </xs:schema> 

    <?xml version="1.0" encoding="utf-8"?> 
    <addml> 
     <objectStore> 
     <folder> 
      <folderProperties> 
      <documentId>str1234</documentId> 
      <documentTitle>str1234</documentTitle> 
      <dateCreated>str1234</dateCreated> 
      </folderProperties> 
      <documents> 
      <document> 
       <docProperties> 
       <documentId>str1234</documentId> 
       <documentTitle>str1234</documentTitle> 
       <dateCreated>str1234</dateCreated> 
       </docProperties> 
      </document> 
      <document> 
       <docProperties> 
       <documentId>str1234</documentId> 
       <documentTitle>str1234</documentTitle> 
       <dateCreated>str1234</dateCreated> 
       </docProperties> 
      </document> 
      </documents> 
     </folder> 
     </objectStore> 
     </addml> 

Мне нужен XML, как указано выше. Примечание. Я получил приведенный ниже XML с помощью онлайн-конвертера.

Помогите в создании xml с использованием Java. Буду признателен за любую оказанную помощь. Спасибо, Марк

+1

Что вы сделали до сих пор и где вы застряли? StackOverflow - это не приложение для написания кода (или XML); вам нужно представить конкретный и ответный вопрос. –

+0

Привет, Эрвин, я очень новичок в Java. Мне нужны данные о том, как создать xml из xsd. Я создал xml для образца xsd, используя JAXB. В приведенном выше примере тег является повторяющимся элементом и также является динамическим. Иногда я могу получить 3 элемента иногда 5. Поэтому мне нужно знать, как добиться такого поведения. Спасибо – user1194310

+1

Я думаю, вы идете по этому не так. Вы не можете создать XML-документ из файла XSD (по крайней мере, не значимый). Вам нужно начать с данных, которые вы хотите кодировать в XML, и, пока вы делаете этот XML, вам необходимо убедиться, что он удовлетворяет схеме. Если вы используете JAXB, это уже поможет вам, потому что у него будут только свойства Java для элементов и атрибутов, которые находятся в XSD. –

ответ

1

Вы называете

xjc sample.xsd 

, и она будет генерировать, в папке нет/arkivverket/standarder/addml/набор исходных файлов Java в этом пакете, который вы используете для создания набора объекты, представляющие XML-данные, которые вы хотите сериализовать («marshalled») в XML-файл.

Наконец, вам понадобится несколько строк кода Java для вызова JAXBContext.newInstance, создайте Marshaller и вызовите его маршал метода.

Google для учебных курсов JAXB.

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