none
Leitura de arquivo XML com vários namespaces

    Pergunta

  • Olá, estou realizando a leitura de um arquivo xml, porém estou com problemas nos namespaces do XML.

    DECLARE @XMLToParse  XML 
    
    -- Load the XML data in to a variable to work with.
    -- This would typically be passed as a parameter to a stored proc
    SET @XMLToParse = '<Response xmlns="http://tempuri.org/">
        <AuthResult xmlns:a="http://schemas.datacontract.org/2004/07/Sistema.Soap.Contracts" xmlns:i="http://www.w3.org/2001/XMLSchema-instance">
            <a:Result>
                <a:Id_Value>500</a:Id_Value>
            </a:Result>
            <a:Result>
                <a:Id_Value>895</a:Id_Value>
            </a:Result>
        </AuthResult>
    </Response>'
    
    -- Declare temp table to parse data into
    DECLARE @ParsingTable  TABLE
        (Id_Value   INT)
    
    -- Parse the XML in to the temp table declared above
    INSERT
    INTO    @ParsingTable
        (Id_Value)
    SELECT  xmlData.A.value('.', 'INT') AS Id_Value
    FROM    @XMLToParse.nodes('Response/AuthResult/Result') xmlData(A)
    
    -- Insert into the actual table from the temp table
    
    SELECT  Id_Value
    FROM    @ParsingTable

    Realizei um teste manual removendo os namespaces e funcionou, porém não posso manipular o xml em produção. Como posso resolver este problema?


    terça-feira, 15 de maio de 2018 18:49

Todas as Respostas

  • Resolvi declarando os namespaces desta forma:

    ;WITH XMLNAMESPACES (DEFAULT 'http://tempuri.org/',
                         'http://schemas.datacontract.org/2004/07/Sistema.Soap.Contracts' as a,
                         'http://www.w3.org/2001/XMLSchema-instance' as i
                         )

    quarta-feira, 16 de maio de 2018 12:00