如何解析xml序列化的列表?通过OPENXML存储在存储过程中
本文关键字:存储 OPENXML 存储过程 过程中 通过 xml 何解析 序列化 列表 | 更新日期: 2023-09-27 18:02:10
我正在序列化一个整数列表,如下所示:
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代码。
我想你只是少了一个.
:
SELECT 1, id
FROM OPENXML (@idoc, '/ArrayOfInt/int')
WITH (id int '.')
与结果: id
----------- -----------
1 3
(1 row(s) affected)
(添加额外的<int>42</int>
等值会导致额外的行等,如您所料)