none
Importação de arquivos XML com conteúdo misto. RRS feed

  • Pergunta

  • Pessoal, 

    Gostaria de pedir a ajuda de vocês para solucionar um problema que venho enfrentando em um desenvolviemnto no SSIS.
    Eu preciso importar dados de diversos arquivos xml, porém recebo erro ao tentar configurar o componente XML Source. O erro está logo abaixo "ERRO".
    O motivo desse erro é por conta que este componente não suporte um schema com conteúdo misto, conforme exemplo abaixo de XSD(Parte do xsd).
    Obs: Neste xml terá conteúdo com caracteres especiais.

    Como posso resolver esse problema?

      <xs:element name="field">
        <xs:complexType mixed="true">
          <xs:choice minOccurs="0" maxOccurs="unbounded">
            <xs:element ref="import:ecs_selection"/>
            <xs:element ref="import:p"/>
            <xs:element ref="import:value"/>
          </xs:choice>
          <xs:attribute name="name" use="required" type="xs:NCName"/>
          <xs:attribute name="title" type="xs:NMTOKEN"/>
        </xs:complexType>
      </xs:element>

    ERRO:

    Error at Data Flow Task[XML Source[27]]: The XML Source Adapter does not support mixed content model on Complex Types

      
    segunda-feira, 8 de junho de 2015 02:20

Todas as Respostas

  • Raphael,

    Passamos por uma situação similar aqui no trabalho, mas o problema acontecia devido ao uso de planilhas do Excel. Resolvemos isto então realizando a leitura do arquivo dentro de um Script Task com código C# e, a partir disto, gerando um novo arquivo .csv com as informações tratadas para carga.

    Após isto, tínhamos um Data Flow lendo o novo arquivo gerado e carregando seu conteúdo para a base.

    Esta é uma solução, pode ser ainda que vc encontre outros caminhos.

    Abs

    segunda-feira, 8 de junho de 2015 12:18
  • Obrigado Renato!

    Eu pensei, também, em manipular os dados via C# como uma opção. Estou analisando algumas outras possibilidades antes de customizar a solução.

    segunda-feira, 8 de junho de 2015 12:40
  • Raphael,

    O problema ocorre porque o Provedor de Dados "XML Source" no SSIS não suporta complexType mixed="true"

    Para evitar este problema, existem duas possibilidades:

    - Se possível, alterar o XSD para processar: "complexType mixed=false";

    - Adicionar uma tarefa "Script" para tratar/consumir estes arquivos;

    No Fórum Americano, existe uma post com um problema semelhante onde foi orientado criar um tratamento na Propriedade "Expressions" do "XML Source", mas sinceramente eu acredito que você poderá ter problemas caso não seja tratado todos os elementos e propriedades do XML. Segue o link abaixo:

    https://social.technet.microsoft.com/Forums/fr-FR/74f83272-67ec-48fe-923b-e520dec9f700/ssis-xml-source-adapter-cant-make-xsd-location-an-expression?forum=sqlintegrationservices

    Se ajudou na sua solução, não esqueça de marcar como resposta !

    Abraços,

    Durval Ramos
    Microsoft Partner | MTA | MCSA - SQL Server 2012 | MCSE - Data Platform
    ----------------------------------
    Se foi resolvido clique "Marcar como resposta" e se foi útil "Votar como Útil"

    segunda-feira, 8 de junho de 2015 13:38
    Moderador
  • Apenas complementando, caso vc realmente opte por fazer a leitura em C#, deixo aqui um exemplo que acredito que possa ser útil (no caso é um post em que escrevi uma solução simplificada para a leitura:

    http://www.devmedia.com.br/utilizando-linq-e-extensions-methods-para-a-leitura-de-arquivos-xml/27149

    segunda-feira, 8 de junho de 2015 13:44
  • Durval, Obrigado por sua resposta!

    Eu ainda não solucionei o problema.

    Estou tentando a sua primeira sugestão. Assim que obter mais informações atualizo com as novidades. Se esta sugestão solucionar o meu problema, marcarei como resposta.

    segunda-feira, 8 de junho de 2015 18:24
  • Obrigado V1R0S_W0R7 por sua resposta!

    Poderia me dar mais detalhes quanto esse método. 

    Desde já agradeço por sua ajuda.

    terça-feira, 9 de junho de 2015 13:14
  • Pessoal, 

    Ainda não consegui solucionar esse problema. Gostaria de contar com a ajuda de todos para uma solução.

    Desde já agradeço!

    quarta-feira, 10 de junho de 2015 17:17
  • Pessoal, 

    Ainda não consegui solucionar esse problema. Gostaria de contar com a ajuda de todos para uma solução.

    Desde já agradeço!

    Raphael,

    Como está o problema agora? É a mesma mensagem de erro?

    Você tentou modificar ou solicitar a modificação deste XML para remover o "complexType" ?

    É fato. O XML Data Source no SSIS "não processa" este tipo de arquivo XML. Se não há como modificar a estrutura do XML na "origem" (quem gera o conteúdo), então você tem duas opções:

    - Altera a estrutura do XML no "destino", através de uma tarefa "Script" no SSIS, ou;

    - Processa este arquivo fora do SSIS, utilizando um Windows Forms ou Console criado para apenas para carregar o conteúdo para um DataTable do .Net Framework.

    Se ajudou na sua solução, não esqueça de marcar como resposta !

    Abraços,

    Durval Ramos
    Microsoft Partner | MTA | MCSA - SQL Server 2012 | MCSE - Data Platform
    ----------------------------------
    Se foi resolvido clique "Marcar como resposta" e se foi útil "Votar como Útil"

    quarta-feira, 10 de junho de 2015 17:28
    Moderador