Inquiridor
Importação de arquivos XML com conteúdo misto.

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
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- Sugerido como Resposta Durval RamosModerator segunda-feira, 6 de julho de 2015 03:00
-
-
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:
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" -
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
- Marcado como Resposta Junior Galvão - MVPMVP, Moderator terça-feira, 9 de junho de 2015 22:45
- Não Marcado como Resposta Raphael Amaral quarta-feira, 10 de junho de 2015 17:16
-
-
-
-
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"- Sugerido como Resposta Durval RamosModerator segunda-feira, 6 de julho de 2015 03:00