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!
    Competence-Center -> Enjoy the Informatrix
    PHProcks!Einsteiger freundliche TutorialsPreComposed Packages


  • #2
    Blöde Frage: Warum musst du denn <![CDATA[ drumpacken, wenn der Inhalt eh escap't wird?
    Standards - Best Practices - AwesomePHP - Guideline für WebApps

    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.
      Competence-Center -> Enjoy the Informatrix
      PHProcks!Einsteiger freundliche TutorialsPreComposed Packages

      Kommentar


      • #4
        Code:
        SELECT
            CAST((@xmlCDATAopen + Tabelle.Title + @xmlCDATAclose) as XML ) as [Name] 
        FROM
            Tabelle
        FOR XML RAW ('Product'), ROOT ('Products'), ELEMENTS
        [URL="https://gitter.im/php-de/chat?utm_source=share-link&utm_medium=link&utm_campaign=share-link"]PHP.de Gitter.im Chat[/URL] - [URL="https://raindrop.io/user/32178"]Meine öffentlichen Bookmarks[/URL] ← Ich habe dir geholfen ? [B][URL="https://www.amazon.de/gp/wishlist/348FHGUZWTNL0"]Beschenk mich[/URL][/B].

        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...
          Competence-Center -> Enjoy the Informatrix
          PHProcks!Einsteiger freundliche TutorialsPreComposed Packages

          Kommentar


          • #6
            Du wirst wahrscheinlich angeln müssen, weil sonst dein Title auch als XML interpretiert wird ( und nicht nur deine "stringflügelchen" ).
            [URL="https://gitter.im/php-de/chat?utm_source=share-link&utm_medium=link&utm_campaign=share-link"]PHP.de Gitter.im Chat[/URL] - [URL="https://raindrop.io/user/32178"]Meine öffentlichen Bookmarks[/URL] ← Ich habe dir geholfen ? [B][URL="https://www.amazon.de/gp/wishlist/348FHGUZWTNL0"]Beschenk mich[/URL][/B].

            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
              Zitat von nikosch
              Macht doch alle was Ihr wollt mit Eurem Billigscheiß. Von mir aus sollen alle Eure Server abrauchen.

              Kommentar


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

                Ich mag kein T-SQL.
                [URL="https://gitter.im/php-de/chat?utm_source=share-link&utm_medium=link&utm_campaign=share-link"]PHP.de Gitter.im Chat[/URL] - [URL="https://raindrop.io/user/32178"]Meine öffentlichen Bookmarks[/URL] ← Ich habe dir geholfen ? [B][URL="https://www.amazon.de/gp/wishlist/348FHGUZWTNL0"]Beschenk mich[/URL][/B].

                Kommentar


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

                  @tr0y:
                  Mir bleibt in diesem Step leider keine Wahl
                  Competence-Center -> Enjoy the Informatrix
                  PHProcks!Einsteiger freundliche TutorialsPreComposed Packages

                  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!
                    Competence-Center -> Enjoy the Informatrix
                    PHProcks!Einsteiger freundliche TutorialsPreComposed Packages

                    Kommentar

                    Lädt...
                    X