SQL Server 2008 - Ajouter une déclaration XML à la sortie XML
J'ai été aux prises avec celui-ci pour quelques jours maintenant, je suis à la recherche d'automatiser une sortie au format XML avec la syntaxe suivante
SELECT (
SELECT CONVERT(VARCHAR(10),GETDATE(),103)
FOR XML PATH('DataVersion'),
TYPE
),
(
SELECT CoNum,
CoName,
CONVERT(VARCHAR(10),AccountToDate,103) 'DLA',
LAFileNet
FROM @XMLOutput
FOR XML PATH('Company'),
TYPE
)
FOR XML PATH(''),
ROOT('Companies')
Qui crée le dessous de sortie
<Companies>
<DataVersion>15/11/2010</DataVersion>
<Company>
<CoNum>111</CoNum>
<CoName>ABCLmt</CoName>
<DLA>12/12/2010</DLA>
<LAFileNet>1234</LAFileNet>
</Company>
<Company>
<CoNum>222</CoNum>
<CoName>DEFLmt</CoName>
<DLA>12/12/2007</DLA>
<LAFileNet>5678</LAFileNet>
</Company>
</Companies>
Ce que je suis aux prises avec la façon d'ajouter la déclaration XML <?xml version="1.0" encoding="ISO-8859-1" ?>
au-dessus de la sortie??
Mise à jour 1: serais-je corriger dans la pensée j'ai besoin de créer un schéma XML dans SQL server pour définir le xsl:output. Puis affectez la sortie de ce schéma?
Mise à jour 2: Ont depuis trouvé ces liens
http://forums.asp.net/t/1455808.aspx -- Découvrez comment à partir de Jian Kang. Aussi
http://www.devnewsgroups.net/group/microsoft.public.sqlserver.xml/topic60022.aspx
source d'informationauteur Pixelated
Vous devez vous connecter pour publier un commentaire.
TL;DR
Concaténer ce:
<?xml version="1.0" encoding="windows-1252" ?>
avec votre XML, converti à varchar(max).Détails
Je suis d'accord avec j0N45 que le schéma ne va pas changer quoi que ce soit. Comme la réponse qu'il a des références points:
J'ai fourni un exemple de code pour le faire dans une autre réponse. Fondamentalement, vous
CONVERT
le XML dansvarchar
ounvarchar
et puis concaténer avec la déclaration XML, tels que<?xml version="1.0" encoding="windows-1252" ?>
.Cependant, il est important de choisir le bon encodage. SQL Server produit non-Unicode en fonction de ses paramètres de classement. Par défaut, qui sera régi par la base de données de paramètres de classement, vous pouvez déterminer à l'aide de ce SQL:
D'un commun classement par défaut est "SQL_Latin1_General_CP1_CI_AS", qui a une page de code 1252. Vous pouvez récupérer le code d'une page avec ce SQL:
Pour la page de code 1252, vous devez utiliser un nom d'encodage de "windows-1252". L'utilisation de "ISO-8859-1" est inexacte. Vous pouvez tester que l'utilisation de la "balle" de caractère: •. Il a un Point de Code Unicode valeur de 8226 (Hex 2022). Vous pouvez générer le personnage dans SQL de manière fiable, quel que soit le classement, à l'aide de ce code:
Il a également un point de code de 149 dans le windows-1252 du code de la page, de sorte que vous si vous êtes l'aide de la commune, le classement par défaut de "SQL_Latin1_General_CP1_CI_AS", alors vous pouvez aussi le produire à l'aide de:
Cependant, CHAR(149) ne sera pas une balle dans tous les classements. Par exemple, si vous essayez ceci:
Vous n'obtenez pas une balle.
La "ISO-8859-1" page de code Windows-28591. Aucun des classements de SQL Server (en 2005, de toute façon) utiliser cette page de code. Vous pouvez obtenir une liste complète des pages de code à l'aide de:
Vous pouvez vérifier que "ISO-8859-1" est le mauvais choix en essayant de l'utiliser dans SQL lui-même. Le code SQL suivant:
Produira XML qui ne contient pas une balle. En effet, il ne produira aucun caractère, parce que les ISO-8859-1 n'a pas de caractère défini pour le point de code 149.
SQL Server gère l'Unicode chaînes de la même façon. Avec des chaînes Unicode (
nvarchar
), "il n'est pas nécessaire pour les différentes pages de code pour gérer les différents jeux de caractères". Toutefois, SQL Server n'utilise PAS de "UTF-8" encoding. Si vous essayez de l'utiliser dans SQL lui-même:Vous obtenez un message d'erreur:
Plutôt, SQL utilise des "UCS-2" encodage, donc cela va fonctionner:
Je pense que cela répond à votre question Comment ajouter de codage xml <?xml version="1.0" encoding="UTF-8"?> à la Sortie xml dans SQL Server.
Je ne pense pas que la création d'un schéma de changer quoi que ce soit, car il est uniquement utilisé pour la validation.
Acclamations