0

©シンボルを含むxmlファイルがあります。しかし、SQL はそのような XML を解析できません。これに対する回避策はありますか?

このクエリ:

declare @XmlResponse as xml; 
select @XmlResponse = '<?xml version="1.0" encoding="utf-8"?><Response>©</Response>'
select @XmlResponse as myxml

エラーを返します:

メッセージ 9420、レベル 16、状態 1、行 15
XML 解析: 行 1、文字 49、不正な xml 文字

4

3 に答える 3

2

©シンボルを XML エンティティに置き換えることができます&#169;

declare @XmlResponse as xml; 
select @XmlResponse = REPLACE('<?xml version="1.0" encoding="utf-8"?><Response>©</Response>', '©', '&#169;')
select @XmlResponse as myxml

その他の XML エンティティについては、http: //en.wikipedia.org/wiki/List_of_XML_and_HTML_character_entity_referencesを参照してください 。

于 2013-02-15T15:37:40.083 に答える
1

問題はencoding attributeです。削除するか、に変更すると機能しutf-16ます。ここにいくつかの詳細があります。ここで作品をフォローutf-16

declare @xml nvarchar(max) = 
'<?xml version="1.0" encoding="utf-16" ?><Response>©</Response>'
select convert(xml, @xml) myxml
于 2013-02-15T15:54:17.567 に答える
1

エンコーディングを取り除くと機能します。 これは、XMLエンコーディングについて見つけた記事です。提案されたエンコーディングを使用してみましたが、別のエラーが発生しました。ただし、エンコーディングを完全に削除すると、正常に動作します。

declare @XmlResponse as xml; 
select @XmlResponse = '<?xml version="1.0" ?><Response>©</Response>'
select @XmlResponse as myxml
于 2013-02-15T15:37:57.743 に答える