| 

.NET C# Java Javascript Exception

2
Hallo,

ich möchte ein XML mit Hilfe von MS SQL (T-SQL) erzeugen.

Dafür benutze ich folgendes Script:

SELECT 
(SELECT
it.Artikelnummer [@id],
(
SELECT
it2.SpracheID [@code],
'<![CDATA[' + it2.Internettext + ']]>'
FROM
Internettexte it2 (NOLOCK)
WHERE
it2.ExterneArtikelnummer = it.ExterneArtikelnummer
-- it.SpracheID <> it2.SpracheID
FOR XML PATH ('text'), TYPE
)
FROM
Internettexte it (NOLOCK)
WHERE
it.ExterneArtikelnummer <> ''
GROUP BY
it.ExterneArtikelnummer
FOR XML PATH ('artikel'), TYPE)
FOR XML PATH (''), ROOT ('Internettexte')


Der dabei entstandene Output sieht dabei so aus:

<Internettexte>
<artikel id="123">
<text code="DE">&lt;![CDATA[&lt;b&gt;123&lt;br&gt;&lt;br&gt;Tesxt&lt;/b&gt;&lt;br&gt;&lt;br&gt;MehrText]]&gt;</text>
<text code="GB">&lt;![CDATA[]]&gt;</text>
</artikel>
<artikel id="234">
<text code="DE">&lt;![CDATA[&lt;b&gt;Guten Morgen&lt;br&gt;&lt;br&gt;Text&lt;/b&gt;&lt;br&gt;&lt;br&gt;...]]&gt;</text>
<text code="GB">&lt;![CDATA[]]&gt;</text>
</artikel>
...


Was hier jetzt das Problem ist: Der FOR XML Path hat alle HTML-Tags encodiert...

Meine Frage ist jetzt:
Gibt es eine Lösung, die HTML Tags Korrekt dar zu stellen?
Das die Ausgabe wieder <b>Kopf</b><p>Beschreibung</p> usw... ist?
04.10.2011
Bibo1987 256 1 8
1 Antwort
3
Das Verhalten des SQL-Server ist korrekt, weil sonst die XML-Struktur nicht korrekt wäre.

Du hast jetzt zwei Möglichkeiten:

1. Entweder Du konvertierst Den HTML-Code beim Verarbeiten wieder.
Hier könntest Du versuchen die Klassen HttpUtility.HtmlDecode & HttpUtility.HtmlEncode zu verwenden.

oder

2. Du verzichtest auf den äußeren XML-Wrapper und läßt Dir das Ergebnis vom SQL-Server direkt in HTML zurückggeben.

Hier findest Du ein Beispiel wie das gemacht wird:
Building HTML Emails With SQL Server and XML

LG, Micha
04.10.2011
mblaess 1,2k 1 9
Danke für die Antwort. Ich verwende aus Zeitgründen erstmal die Replace-Funktion, und Replace alle encodierten HTML-Sonderzeichen.

Nebenbei bemerkt: Ich habe gerade mit FOR XML EXPLICIT und dem RAW Modus experimentiert.
Bibo1987 04.10.2011

Stelle deine Html-Frage jetzt!