質問

こんにちは、SQL Server 2008のテーブルにいくつかのXMLデータを挿入しようとしています。ただし、このエラーを投げ続けています。

XML解析:行1、文字39、エンコードを切り替えることができません

データベース列FileMetaはXMLデータ型を使用し、XMLデータを追加するために必要だと思われるUTF-16にエンコードを切り替えます。

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>');

助けて、私は立ち往生しています。

NB:XMLTextWriterを使用してXMLを作成しました。

役に立ちましたか?

解決

はい、XMLをSQL Server 2008に挿入しようとすると問題があり、XMLにはエンコード命令ラインが含まれています。

私は通常、を使用して回ります CONVERT SQL Serverにそれらの指示をスキップするように指示できる関数 - 次のようなものを使用してください。

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

それは間違いなく、私がさまざまなエンコードされたXMLのものをSQL Serverに入れるのに役立ちました。

を参照してください キャストと変換のMSDNドキュメント - ページの少し下には、使用できるスタイルがいくつかあります CONVERTXML そしてそれらについてのいくつかの説明。

他のヒント

含める必要があります n XML文字列の前で、Unicodeにします。

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>');

これはエラーなしで私のために機能しました:

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);
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top