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 值会导致额外的行等)

于 2013-03-05T10:11:55.157 回答