Étrange Erreur d'analyse XML: ligne 1, le caractère 2038, illégal de caractères xml
J'ai cette requête,
DECLARE @Result XML;
SELECT @Result = ( SELECT PD.*
FROM [ProductDetailedDescriptions] PD
LEFT JOIN [Products] P ON (PD.ProductID= P.ID)
WHERE PD.ProductID = 23
AND P.RetailerID = 1
AND PD.LanguageID = 1
ORDER BY [ORDER]
FOR XML AUTO, ELEMENTS, ROOT('root')
)
Ce lève XML parsing: line 1, character 2038, illegal xml character
. Lorsque je sélectionne juste,
SELECT PD.*
FROM [ProductDetailedDescriptions] PD
LEFT JOIN [Products] P ON (PD.ProductID= P.ID)
WHERE PD.ProductID = 23
AND P.RetailerID = 1
AND PD.LanguageID = 1
ORDER BY [ORDER]
FOR XML AUTO, ELEMENTS, ROOT('root')
Il montre le code xml suivant,
<root>
..............................................
..............................................
<PD>
<ID>4187</ID>
<ProductID>23</ProductID>
<Header>aa</Header>
<Description>with other</Description>
<Order>7</Order>
<LanguageID>1</LanguageID>
</PD>
Note le #x3. Dans mon application, il suffit d'un espace. Est-ce un bug n SQL Server?
- Quel est le contenu de la Description de la colonne si vous interrogez directement sans LMC conversion et qu'est-ce que le classement et le type de données de cette colonne?
- Nvarchar(MAX). Le classement est par Défaut. I est un char invisible. Voir l'image ci-dessus.
Vous devez vous connecter pour publier un commentaire.

est un caractère non valide dans le format XML.De Extensible Markup Language (XML) 1.0 (Cinquième Édition)
Votre requête qui fonctionne peut être simplifié à ceci:
La sortie de la requête ci-dessus est un tableau avec une ligne et une colonne avec le type de données
nvarchar(max)
.Lors de l'affectation à une variable XML, vous obtiendrez une erreur.
Ou lorsque vous spécifiez le
type
directive, la colonne est une colonne XML et vous obtenez une plus détaillée de l'erreur.Vous devez supprimer les caractères illégaux avant de générer le XML.
type
est quelque peu déroutant. Mais il est de retour d'une nvarchar de sorte qu'il fonctionne, mais il est étrange pour moi.