Welcome to Sign in | Help
in Search

xml get value sql server 2005

Last post 08-07-2010, 6:32 PM by rsocol. 3 replies.
Sort Posts: Previous Next
  •  08-03-2010, 11:12 AM 8378

    xml get value sql server 2005

    salut, am o aplicatie care imi genereaza un xml de forma:

    DECLARE @xVar XML
    SET @xVar =<array>
    <XML_Serializer_Tag>
    <nume>KOC ADEM</nume>
    </tip>
    <procent> 25</procent>
    <data_nastere>22-05-1971</data_nastere>
    </XML_Serializer_Tag>

    <XML_Serializer_Tag>
    <nume>KOC ADEM2</nume>
    <tip>0</tip>
    <procent> 25</procent>
    <data_nastere>22-05-1971</data_nastere>
    </XML_Serializer_Tag>
    </array>

    problema este ca acolo unde nu am valori pt un tag anume imi baga doar tagul de sfarsit, exemplu la tip /tip

    eu vreau sa extrag datele respective sub foma de tabel in forma

    nume, tip, procent, data_nasterii

    cu urmatorul select:

    SELECT
    nref.value('nume[1]', 'nvarchar(50)') Nume,
    nref.value('tip[1]', 'nvarchar(50)') tip,
    nref.value('procent[1]', 'nvarchar(50)') procent,
    nref.value('data_nastere[1]', 'nvarchar(50)') data_nastere
    FROM @xVar.nodes('//XML_Serializer_Tag') AS R(nref)

    problema este ca imi intoarce urmatoarea eroare:

    Msg 9436, Level 16, State 1, Line 2
    XML parsing: line 4, character 6, end tag does not match start tag

    de la acel tag nedeschis.

    daca scot acel /tip functioneaza cum trebuie sau daca as avea deschiderea respectivului tag tip

    cum pot face asta din sql(t-sql).

    multumesc.
    Alex
  •  08-03-2010, 6:34 PM 8379 in reply to 8378

    Re: xml get value sql server 2005

    E ciudat ce zici tu sa inteleg ca xquery-ul ala nu merge cand ai noduri de forma <tip/> ci de forma <tip></tip>,pentru ca am bele genereaza xm valid?

    Ce sql server ai?


    Secolul XXI ori va fi religios ori nu va fi deloc
  •  08-03-2010, 11:57 PM 8380 in reply to 8378

    Re: xml get value sql server 2005

    Din cate inteleg vrei sa cureti tagurile /tip (de exemplu) "orfane". Incearca o functie CLR si regular expressions.
  •  08-07-2010, 6:32 PM 8386 in reply to 8378

    Re: xml get value sql server 2005

    Inteleg ca in XML-ul tau sursa, atunci cand lipseste o valoare, el nu scrie nici:
    <tip></tip>
    nici:
    <tip/>
    ci scrie doar:
    </tip>

    In cazul acesta fisierul sursa nu este un XML valid, si nu prea are cum sa fie prelucrat cu nicio scula care prelucreaza XML-uri.

    Solutia corecta este sa iei legatura cu cei care genereaza fisierul si sa le spui sa genereze XML-uri valide.

    Cealalte solutii ar fi:
    a) sa prelucrezi fisierul ca un string (folosind functiile CHARINDEX si SUBSTRING).

    b) sa incerci sa il modifici cu un Regex (in .NET) astfel incat sa iasa un XML valid.

    Razvan

View as RSS news feed in XML
Powered by Community Server (Commercial Edition), by Telligent Systems