none
XML RRS feed

  • Frage

  • Guten Abend,

    ich versuche gerade XML etwas zu verstehen.

    Hierzu habe ich mir ein Beispiel von dieser Seite erstellt:

    https://www.codeproject.com/Articles/1073184/%2FArticles%2F1073184%2FHow-to-import-data-into-MS-SQL-server-from-CSV-and

    Im MSSQL bekomme ich aber keine Datenzeile:

    DECLARE @xml XML =
    N'
    <persons>
        <person>
             <id> 1 </id>
             <personsname> AjsonDev </personsname>
             <country> United Kingdom </country>
             <languages>
                 <language> C# </language>
                 <language> JavaScript </language>
                 <language> Python </language>
                 <language> Objective-C </language>
                 <language> Pascal </language>
                 <language> F# </language>
                 <language> R </language>
             </languages>
        </person>
        <person>
             <id> 2 </id>
             <personsname> Mahabir </personsname>
             <country> India </country>
             <languages>
                  <language> C# </language>
                  <language> JavaScript </language>
                  <language> C++ </language>
                  <langauge> VB 
                  <language> SQL </language>
             </langauge></languages> 
        </person>
        <person>
             <id> 3 </id>
             <personsname> Joanna </personsname>
             <country> Netherlands </country>
             <languages>
                  <language> Dutch </language>
             <languages>
        </languages></languages></person>
    </persons>
     ;'
    
    	SELECT 
    	xData.value('../ID          [1]','int') ID,
    	xData.value('../PersonsName [1]','VARCHAR(50)') PersonsName,
    	xData.value('../Country     [1]','varchar(100)') Country,
    	xData.value('(.)            [1]','varchar(1000)')
    	FROM @xml.nodes('./Persons/Person/Languages') as x(xData)
    
    

    Kann mir vielleicht jemand sagen, was hier verkehrt ist?

    Vielen Dank schon einmal.

    Donnerstag, 10. Januar 2019 20:51

Antworten

  • Hi Jörg,
    XML ist casesensitive. D.h, Groß-/Kleinschreibung ist für die Knotenbezeichner genau einzuhalten. Für Deine XML-Daten bedeutet das:

    	SELECT 
    	xData.value('../id          [1]','int') ID,
    	xData.value('../personsName [1]','VARCHAR(50)') PersonsName,
    	xData.value('../country     [1]','varchar(100)') Country,
    	xData.value('(.)            [1]','varchar(1000)')
    	FROM @xml.nodes('./persons/person/languages') as x(xData)


    --
    Viele Grüsse
    Peter Fleischer (ehem. MVP für Developer Technologies)
    Meine Homepage mit Tipps und Tricks

    • Als Antwort vorgeschlagen Olaf HelperMVP Freitag, 11. Januar 2019 06:42
    • Als Antwort markiert Joerg_x Freitag, 11. Januar 2019 18:09
    Freitag, 11. Januar 2019 04:05

Alle Antworten

  • Hi Jörg,
    XML ist casesensitive. D.h, Groß-/Kleinschreibung ist für die Knotenbezeichner genau einzuhalten. Für Deine XML-Daten bedeutet das:

    	SELECT 
    	xData.value('../id          [1]','int') ID,
    	xData.value('../personsName [1]','VARCHAR(50)') PersonsName,
    	xData.value('../country     [1]','varchar(100)') Country,
    	xData.value('(.)            [1]','varchar(1000)')
    	FROM @xml.nodes('./persons/person/languages') as x(xData)


    --
    Viele Grüsse
    Peter Fleischer (ehem. MVP für Developer Technologies)
    Meine Homepage mit Tipps und Tricks

    • Als Antwort vorgeschlagen Olaf HelperMVP Freitag, 11. Januar 2019 06:42
    • Als Antwort markiert Joerg_x Freitag, 11. Januar 2019 18:09
    Freitag, 11. Januar 2019 04:05
  • N'
    <persons>
        <person>
             <id> 1 </id>
             <personsname> AjsonDev </personsname>

    Hi Jörg,
    XML ist casesensitive. D.h, Groß-/Kleinschreibung ist für die Knotenbezeichner genau einzuhalten. Für Deine XML-Daten bedeutet das:

    	SELECT 
    	xData.value('../id          [1]','int') ID,
    	xData.value('../personsName [1]','VARCHAR(50)') PersonsName,
    	

    Genau Peter, und gleich ein gutes Beispiel mitgeliefert ;-)

    Olaf Helper

    [ Blog] [ Xing] [ MVP]

    Freitag, 11. Januar 2019 06:44
  • Hallo Peter, hallo Olaf,

    vielen Dank. Wenn es doch immer so einfach wäre.

    Habt Ihr ggfs. auch noch ein paar Links, in denen die zu verwendende Syntax bei XML Abfragen gut erläutert ist?

    Danke.

    Freitag, 11. Januar 2019 18:13
  • Hallo Jörg,

    das Abfrage von XML im SQL Server läuft unter XQuery-Sprachreferenz (SQL Server)


    Olaf Helper

    [ Blog] [ Xing] [ MVP]

    Freitag, 11. Januar 2019 19:09