Конвертировать CSV в XML с использованием XSD - PullRequest
0 голосов
/ 21 апреля 2020

Нам нужно написать программу, которая создает файл XML на основе файла CSV. Я предпочитаю делать это в java, но я не профессиональный программист.

Это структура моего желаемого XML

<?xml version="1.0" encoding="UTF-8"?>
<UteXmlComuniction xmlns="http://www....../data">
    <Client Genaral Data>
        <Client>
            <pfPg></pfPg>  
            <name>Arnold</name>
            <Family>Bordon</family>
        </Client>
        <Contract>
            <ContractDetail>
                <Contract>100020</Contract>
                <ContractYear>2019</ContractYear>
            </ContractDetail>
         </Contract>
    </Client Genaral Data>

Я ожидал, что заголовки в файле CSV будут выглядеть примерно так:

"UteXmlComuniction/ClientGeneralData/Client/pfpg", "UteXmlComuniction/ClientGeneralData/Client/name" , 
"UteXmlComuniction/ClientGeneralData/Client/Family" , ...

Но это мой CSV-файл

"DefinitionPF/PG","ZC_NAME","ZC_FAMI","ZDS_CONT", "ZDC_CONTYEAR"
"PF","Arnold","bordon", "100020", 2018

Как видите, названия полей в CSV и XML не совпадают (но порядок полей всегда одинаков), поэтому мне нужно создать имя поля на основе моего XSD-файла

Вот XSD-файл, который у нас есть

<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" targetNamespace="http://ww......./data" xmlns:xs="http://www.w3.org/2001/XMLSchema">
  <xs:element name="UteXmlComunication">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="ClientGeneralData" maxOccurs="unbounded" minOccurs="0">
          <xs:complexType>
            <xs:sequence>
              <xs:element name="Client">
                <xs:complexType>
                  <xs:sequence>
                    <xs:element type="xs:string" name="pfpg"/>
                    <xs:element type="xs:string" name="name"/>
                    <xs:element type="xs:string" name="fammily"/>
                  </xs:sequence>
                </xs:complexType>
              </xs:element>
              <xs:element name="Contract">
                <xs:complexType>
                  <xs:sequence>
                    <xs:element name="ContractDetail">
                      <xs:complexType>
                        <xs:sequence>
                          <xs:element type="xs:short" name="Contract"/>
                          <xs:element type="xs:byte" name="ContractYear"/>
                        </xs:sequence>
                      </xs:complexType>
                    </xs:element>

Основанный на XSD, например, "ZC_NAME" должен быть назван "name"

Но, как уже упоминалось в этом топи c ( преобразование CSV в xml с XSD ) XSD не на производимом языке, поэтому мой вопрос, как я могу сделать это автоматически?

Можете ли вы предложить мне, как я могу это сделать?

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