Как сделать другой порядок с элементами из XSD в XML - PullRequest
0 голосов
/ 22 мая 2019

вчера я спрашивал о конкретном выводе из файла Parsed CSV в XML, но сегодня я столкнулся с новой проблемой.Я получил схему XSD от нашего партнера и сгенерировал классы JAXB.Проблема в том, что элемент выполняет после элементов и, но он должен появиться раньше.Как я могу это исправить?

Я пытался изменить структуру XSD и заново сгенерировать классы JAXB, но это не помогло.

Вот часть XSD, которая вызывает проблемы:

<xs:complexType name="Posiljka" abstract="true">
    <xs:sequence>
      <xs:element name="MAS" type="xs:decimal" />
      <xs:element name="DRZ" type="Drzava" />
      <xs:element minOccurs="0" name="GS" type="Storitev" />
      <xs:element minOccurs="0" name="ODK" type="xs:decimal" />
      <xs:element minOccurs="0" name="VRE" type="xs:decimal" />
      <xs:element minOccurs="0" name="VPD" type="xs:string" />
      <xs:element minOccurs="0" name="VPL" type="xs:decimal" />
      <xs:element minOccurs="0" name="VREDTS" type="xs:decimal" />
      <xs:element minOccurs="0" name="POS" type="xs:decimal" />
      <xs:element minOccurs="0" name="PZ" type="xs:decimal" />
      <xs:element minOccurs="0" name="PO" type="xs:decimal" />
      <xs:element minOccurs="0" name="PPS" type="xs:decimal" />
      <xs:element minOccurs="0" name="PPN" type="xs:decimal" />
      <xs:element minOccurs="0" name="DST" type="xs:string" />
      <xs:element minOccurs="0" name="DS" type="ArrayOfDodatneStoritve" />
    </xs:sequence>
  </xs:complexType>
  <xs:complexType name="RegistriranaPosiljka">
    <xs:complexContent mixed="false">
      <xs:extension base="Posiljka">
        <xs:sequence>
          <xs:element name="ZAPST" type="xs:int" />
          <xs:element minOccurs="0" name="NAS" type="Naslovnik" />
          <xs:element name="REG" type="xs:string" />
          <xs:element minOccurs="0" name="DODPOS" type="ArrayOfDODREGPOS" />
          <xs:element minOccurs="0" name="DP" type="DodatniPodatki" />
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>

и вот часть кода, которая извлекает данные для помещения в XML:


    String line = "";
        String cvsSplitBy = "|";

        Oddaja oddaja = new Oddaja();
        ArrayOfRegPosiljka regp = new ArrayOfRegPosiljka();

        oddaja.setWPID("CertSubject");
        oddaja.setKOMID(21553);
        oddaja.setSTODD(0);
        oddaja.setPOGID(2427);
        oddaja.setPODID(0);
        oddaja.setPOSID("7733");
        oddaja.setRegistriranePosiljke(regp);

        ObjectFactory fc = new ObjectFactory();
        Oddaja odd = fc.createOddaja();
        odd.setWPID(oddaja.getWPID());
        odd.setSTODD(oddaja.getSTODD());
        odd.setKOMID(oddaja.getKOMID());
        odd.setPOGID(oddaja.getPOGID());
        odd.setPODID(oddaja.getPODID());
        odd.setPOSID(oddaja.getPOSID());

        odd.setRegistriranePosiljke(oddaja.getRegistriranePosiljke());

        try (BufferedReader br = new BufferedReader(new FileReader(csvFile))) {

            while ((line = br.readLine()) != null) {

                // use delimiter as separator
                String[] podatki = line.split(Pattern.quote(cvsSplitBy));

                RegistriranaPosiljka regpos = new RegistriranaPosiljka();
                regpos.setZAPST(Integer.parseInt(podatki[0]));
                regpos.setREG(podatki[1]);

                Naslovnik nasl = new Naslovnik();
                nasl.setNAZ(podatki[2]);
                nasl.setPOSTST(podatki[3]);

                regpos.setMAS(new BigDecimal(podatki[4]));

                Storitev sto = new Storitev();
                sto.setNAZ(podatki[7]);

                regpos.setGS(sto);
                regpos.setNAS(nasl);

                regp.getREGPOS().add(regpos);
            }

        } catch (IOException e) {
            e.printStackTrace();
        }

        try{
            JAXBContext jc = JAXBContext.newInstance("generated");
            JAXBElement<Oddaja> element = fc.createOddaja(oddaja);
            Marshaller ms = jc.createMarshaller();
            ms.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);
            ms.marshal(element, System.out);
            ms.marshal(element, new File("src/eSpremnicaXML/test2.xml"));
        } catch(Exception e) {
            e.printStackTrace();
        }

    }
}```
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...