2

次のように整数のリストをシリアル化しています。

List<int> Ids=new List<int>();
Ids.Add(3);
Ids.Add(98);
XmlSerializer xs = new XmlSerializer(typeof(List<int>));
MemoryStream ms = new MemoryStream();
xs.Serialize(ms,Ids);

string resultXML = UTF8Encoding.UTF8.GetString(ms.ToArray());

resultXMLストアド プロシージャに渡します。

xml ( resultXML) の形式は次のとおりです。

<?xml version="1.0"?>
<ArrayOfInt xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<int>3</int>
</ArrayOfInt>

次のように、ストアド プロシージャでこれを解析しようとしています。

insert into Table(did,pid)
(SELECT 1, id
FROM       OPENXML (@idoc, '/ArrayOfInt/int',)
        WITH (id int
              ))

しかし、私は値を取得していません。id列は常に次のnullとおりです。

            id
----------- -----------
1           NULL

どうすればこれを修正できますか? SP/TSQL、xml、および C#/.NET コードのいずれかを変更できます。

4

1 に答える 1

4

私はあなたがちょうど欠けていると思います.:

SELECT 1, id
FROM OPENXML (@idoc, '/ArrayOfInt/int')
WITH (id int '.')

結果:

            id
----------- -----------
1           3

(1 row(s) affected)

(追加の<int>42</int>etc 値を追加すると、予想どおり、追加の行 etc が生成されます)

于 2013-03-05T10:11:55.157 に答える