Ankündigung

Einklappen
Keine Ankündigung bisher.

[Erledigt] T-SQL < und > in XML RAW nutzen

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • [Erledigt] T-SQL < und > in XML RAW nutzen

    Moin,

    weiß jemand zufällig, wie ich in T-SQL mit FOR XML RAW die Tag-Begrenzer < und > verwenden kann?

    Beispiel:
    Code:
    DECLARE @xmlCDATAopen varchar(11), @xmlCDATAclose varchar(4)
    SET @xmlCDATAopen = '<![CDATA[ '
    SET @xmlCDATAclose = ']]>'
    
    SELECT
        @xmlCDATAopen + Tabelle.Title + @xmlCDATAclose as [Name]
    FROM
        Tabelle
    FOR XML RAW ('Product'), ROOT ('Products'), ELEMENTS
    Ergebnis:
    Code:
    <Products>
        <Product>
            <Name>&lt;![[CDATA[ Wert von Tabelle.Title ]]&gt;</Name>
        </Product>
    </Products>
    Mir ist bewußt, daß ich auf FOR XML EXPLICIT zurückgreifen kann, aber das ist doch sehr komplex, gerade weil meine Abfrage im Original über mehrere Tabellen JOINt, was das ganze mit dem EXLICIT nicht übersichtlicher geschweige denn Fehler-Unanfälliger macht...

    Ein Ausweichen auf ein anderes DB-System ist in diesem Falle nicht möglich

    Vielleicht hat ja jemand einen Tipp, wie ich das in T-SQL auch über FOR XML RAW lösen kann?

    Danke!

  • #2
    Blöde Frage: Warum musst du denn <![CDATA[ drumpacken, wenn der Inhalt eh escap't wird?

    Kommentar


    • #3
      Das wird ein Export-Feed und der erwartet per Definition in einigen Tags die CDATA-Direktive, ansonsten wird der mir immer als fehlerhaft deklariert und nicht angenommen.

      Kommentar


      • #4
        Code:
        SELECT
            CAST((@xmlCDATAopen + Tabelle.Title + @xmlCDATAclose) as XML ) as [Name] 
        FROM
            Tabelle
        FOR XML RAW ('Product'), ROOT ('Products'), ELEMENTS

        Kommentar


        • #5
          Ach Du Sch...
          Auf die einfachste Variante bin ich nicht gekommen... Das probiere ich morgen früh gleich mal aus.

          Danke für den Wink mit dem Burgtor...

          Kommentar


          • #6
            Du wirst wahrscheinlich angeln müssen, weil sonst dein Title auch als XML interpretiert wird ( und nicht nur deine "stringflügelchen" ).

            Kommentar


            • #7
              Versuchs mit
              Code:
              Tabelle.Title as [Name!1!!cdata]
              Kenne mich damit auch nicht aus, habs unter Google gefunden.

              Siehe http://www.informit.com/articles/art...02307&seqNum=4 unter "The cdata Directive"

              E: Zu langsam

              Kommentar


              • #8
                Das wär' ne alterative wenn das funktioniert..

                Ich mag kein T-SQL.

                Kommentar


                • #9
                  @tkausl:
                  Das wäre aber FOR XML EXPLICIT

                  @tr0y:
                  Mir bleibt in diesem Step leider keine Wahl

                  Kommentar


                  • #10
                    Lösung über EXPLICIT verwendet

                    Schade... Das haut auch nicht hin. Er schmeißt dann die Zeichenkette <![CDATA[ komplett raus...
                    Das wird vermutlich auch nur über die EXPLICIT-Variante gehen, da die Entity-Wandlung vom XML-Interpreter durchgeführt wird und sich bei RAW und AUTO scheinbar nicht abschalten lässt.


                    EDIT
                    Habe es jetzt über EXPLICIT gemacht, alle anderen Workarounds generieren an anderen Stellen dann wieder Probleme.

                    Danke für eure Mühen!

                    Kommentar

                    Lädt...
                    X