31

こんにちは、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>');

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

注意: XMLTextWriter で XML を作成しました。

4

3 に答える 3

36

はい、XML を SQL Server 2008 に挿入しようとすると、XML にエンコード命令行が含まれている場合に問題が発生します。

私は通常、CONVERTSQL 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 のドキュメントを参照してください。ページの少し下に、使用できる多くのスタイルCONVERTXMLそれらについての説明があります。

于 2010-09-02T16:01:04.087 に答える
20

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>');
于 2010-09-02T16:06:02.350 に答える