XML形式の既存の表の列の値を、XMLの属性の値として作成し、そのXML形式(角括弧、引用符など)を保持する方法を教えてください。 (何が起こっているかについて用語は文字(<が、>、「)エンティティ化されていることと思われます。)(SQL Server 2008 R2の)xml形式の属性値を持つXMLを作成する
declare @T table (
ID int identity,
Col1 varchar(200),
Col2 varchar(max)
);
insert @T
select 'ABC', 'Value01'
union
select 'DEF', '<Ele01>A01</Ele01>'
union
select 'GHI', '<Elements><Ele02>A02</Ele02><Ele03>A03</Ele03></Elements>'
union
select 'JKL', '<Ele04 Att01="V01" Att02="V02" />';
select (
select
Col1 as '@Col1',
Col2 as '@Col2'
from @T
for xml path(N'Item'), type
) as TValues
for xml path(N'T'), type, elements xsinil;
結果は次のようになります。
<T xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<TValues>
<Item Col1="ABC" Col2="Value01" />
<Item Col1="DEF" Col2="<Element01>A01</Element01>" />
<Item Col1="GHI" Col2="<Elements><Element02>A02</Element02><Element03>A03</Element03></Elements>" />
<Item Col1="JKL" Col2="<Element04 Att01="V01" Att02="V02" />" />
</TValues>
</T>
これは、実際の結果である:私は答えを探しており、これらはやや問題に対処する私は見つけることができる唯一のリンクの一部です
<T xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<TValues>
<Item Col1="ABC" Col2="Value01" />
<Item Col1="DEF" Col2="<Element01>A01</Element01>" />
<Item Col1="GHI" Col2="<Elements><Element02>A02</Element02><Element03>A03</Element03></Elements>" />
<Item Col1="JKL" Col2="<Element04 Att01="V01" Att02="V02" />" />
</TValues>
</T>
: http://blogs.lobsterpot.com.au/2010/04/15/handling-special-characters-with-for-xml-path/ How do I avoid character encoding when using "FOR XML PATH"? https://www.red-gate.com/simple-talk/sql/learn-sql-server/using-the-for-xml-clause-to-return-query-results-as-xml/
私は事実の後にエンティティ化文字を置き換えることができることを理解するが、私はより良い方法がなければならないと考えています。 これを実現する方法を知っている人の助けに本当に感謝します。
私の質問が誰かの基準を満たしていない場合は、お詫び申し上げます。
XMLであなたの「ようになっているはずですが」だけのようにすることができ: または ' - あなたはそれを持っています:-) –
Vadim
Hm .. xmlの部分fter _結果は次のようになります。_は有効なxmlではありません。 – gofr1