Frage

Hallo, ich versuche, einige XML -Daten in eine Tabelle auf SQL Server 2008 einzufügen. Ich werde jedoch immer wieder diesen Fehler geworfen.

XML -Analyse: Zeile 1, Zeichen 39, die Codierung kann nicht wechseln

Die Datenbankspalten-Filemeta verwendet den XML-Datentyp, und ich habe die Codierung auf UTF-16 gewechselt, die meiner Meinung nach zum Hinzufügen von XML-Daten erforderlich ist.

INSERT INTO testfiles
  (filename, filemeta) 
VALUES 
  ('test.mp3', '<?xml version="1.0" encoding="utf-16" standalone="yes"?><!--This is a test XML file--><filemeta filetype="Audio"><Comments /><AlbumTitle /><TrackNumber /><ArtistName /><Year /><Genre /><TrackTitle /></filemeta>');

Hilfe, ich stecke fest.

NB: Ich habe das XML mit XMLTextWriter erstellt.

War es hilfreich?

Lösung

Ja, es gibt Probleme, wenn Sie versuchen, XML in SQL Server 2008 einzufügen, und der XML enthält eine Codierungsanweisungslinie.

Ich gehe normalerweise mit der CONVERT Funktion, die es mir ermöglicht, SQL Server zum Überspringen dieser Anweisungen zu überspringen. Verwenden Sie so etwas:

INSERT INTO testfiles
  (filename, filemeta) 
VALUES 
  ('test.mp3', CONVERT(XML, N'<?xml version="1.0" encoding="utf-16" standalone="yes"?>......', 2));

Es hat mir definitiv geholfen, verschiedene codierte XML -Sachen in SQL Server zu bringen.

Siehe das MSDN -Dokumente über Cast and Convert - Ein bisschen auf der Seite gibt es eine Reihe von Stilen, für die Sie verwenden können CONVERT mit XML und einige Erklärungen zu ihnen.

Andere Tipps

Sie müssen nur einschließen N Vor Ihrer XML -Zeichenfolge, um es Unicode zu machen.

INSERT INTO testfiles
  (filename, filemeta) 
VALUES 
  ('test.mp3', N'<?xml version="1.0" encoding="utf-16" standalone="yes"?><!--This is a test XML file--><filemeta filetype="Audio"><Comments /><AlbumTitle /><TrackNumber /><ArtistName /><Year /><Genre /><TrackTitle /></filemeta>');

Dies funktionierte für mich ohne Fehler:

DECLARE @input XML 
SET @input = N'<?xml version="1.0" encoding="utf-16" standalone="yes"?><!--This is a test XML file--><filemeta filetype="Audio"><Comments /><AlbumTitle /><TrackNumber /><ArtistName /><Year /><Genre /><TrackTitle /></filemeta>'

INSERT INTO testfiles (filename, filemeta)
VALUES ('test.mp3', @input);
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top