У меня есть некоторые очень основные данные ниже. Рабочий процесс, который я использую, заключается в экспорте из Google Sheets в xml
в виде одного столбца данных.
Как я могу генерировать JAXB
классы, которые являются разумными, используя такой инструмент, как trang
или xmllint
, или, как показано ниже, xjc
?
thufir@dur:~/jaxb$
thufir@dur:~/jaxb$ cat dummy.xml
<data>
<b />
<c />
<d />
<e />
<f />
<f />
<h />
<i />
</data>
thufir@dur:~/jaxb$
thufir@dur:~/jaxb$ trang dummy.xml dummy.xsd
thufir@dur:~/jaxb$
thufir@dur:~/jaxb$ cat dummy.xsd
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">
<xs:element name="data">
<xs:complexType>
<xs:sequence>
<xs:element ref="b"/>
<xs:element ref="c"/>
<xs:element ref="d"/>
<xs:element ref="e"/>
<xs:element maxOccurs="unbounded" ref="f"/>
<xs:element ref="h"/>
<xs:element ref="i"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="b">
<xs:complexType/>
</xs:element>
<xs:element name="c">
<xs:complexType/>
</xs:element>
<xs:element name="d">
<xs:complexType/>
</xs:element>
<xs:element name="e">
<xs:complexType/>
</xs:element>
<xs:element name="f">
<xs:complexType/>
</xs:element>
<xs:element name="h">
<xs:complexType/>
</xs:element>
<xs:element name="i">
<xs:complexType/>
</xs:element>
</xs:schema>
thufir@dur:~/jaxb$
Я могу создать jaxb
файлы как:
<code>thufir@dur:~/jaxb$
thufir@dur:~/jaxb$ xjc dummy.xsd
parsing a schema...
compiling a schema...
generated/B.java
generated/C.java
generated/D.java
generated/Data.java
generated/E.java
generated/F.java
generated/H.java
generated/I.java
generated/ObjectFactory.java
thufir@dur:~/jaxb$
thufir@dur:~/jaxb$ wc -l generated/Data.java
246 generated/Data.java
thufir@dur:~/jaxb$
thufir@dur:~/jaxb$ head generated/Data.java -n 77
//
// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.8-b130911.1802
// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
// Any modifications to this file will be lost upon recompilation of the source schema.
// Generated on: 2019.01.11 at 06:17:29 AM PST
//
package generated;
import java.util.ArrayList;
import java.util.List;
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;
import javax.xml.bind.annotation.XmlType;
/**
* <p>Java class for anonymous complex type.
*
* <p>The following schema fragment specifies the expected content contained within this class.
*
* <pre>
* <complexType>
* <complexContent>
* <restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
* <sequence>
* <element ref="{}b"/>
* <element ref="{}c"/>
* <element ref="{}d"/>
* <element ref="{}e"/>
* <element ref="{}f" maxOccurs="unbounded"/>
* <element ref="{}h"/>
* <element ref="{}i"/>
* </sequence>
* </restriction>
* </complexContent>
* </complexType>
*
*
*
* /
@XmlAccessorType (XmlAccessType.FIELD)
@XmlType (name = "", propOrder = {
«Б»,
«С»,
«Д»,
«Е»,
«Е»,
"час",
"я"
})
@XmlRootElement (name = "data")
public class Data {
@XmlElement (обязательно = true)
защищенный B b;
@XmlElement (обязательно = true)
защищенный C c;
@XmlElement (обязательно = true)
защищенный D d;
@XmlElement (обязательно = true)
защищенный E e;
@XmlElement (обязательно = true)
защищенный список f;
@XmlElement (обязательно = true)
защищенный H h;
@XmlElement (обязательно = true)
защищенный я я;
/ **
* Получает значение свойства b.
*
* @вернуть
* возможный объект
Суфир @ дуры: ~ / JAXB $
во-первых, немного спам.
Имеет ли свой метод для каждого элемента? Это такой простой CSV
файл, но очень сложный к тому моменту, когда он достигает Java
.
Какой может быть более вменяемый подход? Потому что, если исходный файл содержал бы тысячу строк, я не мог бы подумать, как будет выглядеть сгенерированный класс Java.
Итак, как мне исправить файл xsd
?