こんにちは、SQL Server 2008のテーブルにXMLデータを挿入しようとしています。ただし、このエラーがスローされ続けます。
XML解析:行1、文字39、エンコードを切り替えることができません
データベース列filemetaはXMLデータ型を使用しており、エンコードをUTF-16に切り替えました。これはXMLデータを追加するために必要だと思います。
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に取り込むのに役立ちました。
CASTおよびCONVERTのMSDNドキュメント を参照してください-ページの少し下に、CONVERT
でXML
で使用できるスタイルとその説明がいくつかあります。
ユニコードにするには、XML文字列の前に[〜#〜] n [〜#〜]を含めるだけです。
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);