我通过一个查询接口返回如下string类型 XML字符串
<?xml version='1.0' encoding='GBK'?>
<root>
<head>
<code>1</code>
<message>数据下载成功!</message>
<rownum>1</rownum>
</head>
<body>
<viosurveil id='0'>
<clsbdh>4015</clsbdh>
<lxfs>012345678</lxfs>
<jtfsmc></jtfsmc>
</viosurveil>
</body></root>
但当我通过DataSet自带的ReadXml 方法转换DataSet时,报 列名“id”是为不同的映射类型定义的。的错误
其中的<viosurveil id='0'> 是随着资料返回条数增加而增加的
如 有俩条时即为<viosurveil id='1'>
以此类推
各位大大们有解决方法或思路吗?
<?xml version='1.0' encoding='GBK'?>
<root>
<head>
<code>1</code>
<message>数据下载成功!</message>
<rownum>1</rownum>
</head>
<body>
<viosurveil id='0'>
<clsbdh>4015</clsbdh>
<lxfs>012345678</lxfs>
<jtfsmc></jtfsmc>
</viosurveil>
</body></root>
但当我通过DataSet自带的ReadXml 方法转换DataSet时,报 列名“id”是为不同的映射类型定义的。的错误
其中的<viosurveil id='0'> 是随着资料返回条数增加而增加的
如 有俩条时即为<viosurveil id='1'>
以此类推
各位大大们有解决方法或思路吗?
再不行就xmldocument逐条加到dataset吧
因为是调用人家的接口,返回的XML字符串是不会随便变动结构的。
string strXml = "<?xml version='1.0' encoding='GBK'?><root><head><code>1</code><message>数据下载成功!</message><rownum>1</rownum></head>" +
"<body><viosurveil id='0'><clsbdh>4015</clsbdh><lxfs>012345678</lxfs><jtfsmc></jtfsmc></viosurveil><viosurveil id='1'><clsbdh>4016</clsbdh><lxfs>012345679</lxfs><jtfsmc></jtfsmc></viosurveil></body></root>";DataSet ds = new DataSet();
DataTable dt = new DataTable("viosurveil");
dt.Columns.Add("id");
dt.Columns.Add("clsbdh");
dt.Columns.Add("lxfs");
dt.Columns.Add("jtfsmc");XmlDocument doc = new XmlDocument();
doc.LoadXml(strXml);
XmlNodeList nodes = doc.DocumentElement.SelectNodes("body/viosurveil");
foreach (XmlNode node in nodes)
{
string id = node.Attributes["id"].Value;
string clsbdh = node.SelectSingleNode("clsbdh").InnerText;
string lxfs = node.SelectSingleNode("lxfs").InnerText;
string jtfsmc = node.SelectSingleNode("jtfsmc").InnerText;
dt.Rows.Add(id, clsbdh, lxfs, jtfsmc);
}
ds.Tables.Add(dt);