无法将嵌套关系或元素列添加到包含SimpleContent列的表中
嗨,我写这个代码
“
XmlTextReader read = new XmlTextReader("http://msdn.microsoft.com/rss.xml"); DataSet ds = new DataSet(); ds.ReadXml(read); ListView1.DataSource = ds.Tables[4]; ListView1.DataBind(); "
这个错误正在讨厌
“无法将嵌套关系或元素列添加到包含SimpleContent列的表中”
您的问题是您在文档中的某处具有相同的元素名称和不同的结构。
所以,例如,如果你有
- Bicycle
然后在你的文件中
Bicycle
XSD将无法为第二个Item属性结构生成正确的模式,因为它已根据先前的声明将Item定义为SimpleContent列。
解决方案是(自然地)避免在XML中为不同的结构使用相同的元素名称。 很明显,在你的情况下,由于微软拥有相关的XML,因此很不方便(假设,因为Deni的评论表明这个网站不再存在。)你必须使用XMLWriter或某些变体来替换有问题的元素的名称独特的东西。
看起来你的xml包含一个既包含文本子元素(简单内容)又包含其他元素子元素的元素。
DataSet不允许表同时包含简单内容列和元素列。
请参阅http://msdn2.microsoft.com/en-us/library/zx8h06sz.aspx
在我的情况下,此错误出现在WCF客户端。 在WCF服务器端,它是由于缺少对函数的SQL SELECT权限 – System.Data.SqlClient.SqlException引起的。
WCF客户端试图反序列化数据集,显然不存在,继续显示“无法添加SimpleContent …”错误。 我不会称之为误导性消息,而是必须正确解释的消息。
我认为当您从服务调用的Responsetext尝试ReadXml时,将显示此错误。 在这种情况下,只需获取outerxml格式所需的必要节点属性。 那些不需要的人跳过那个元素。
例如
var responseString = new StreamReader(response.GetResponseStream()).ReadToEnd(); XmlDocument doc = new XmlDocument(); DataSet ds = new DataSet(); doc.LoadXml(responseString); foreach (XmlNode node in doc.SelectNodes("result/records")) { doc = new XmlDocument(); doc.LoadXml(node.OuterXml.ToString()); } using (XmlReader reader = new XmlNodeReader(doc.DocumentElement)) { ds.ReadXml(reader); reader.Close(); }
在上面的示例中,我只想在响应流中使用“记录”节点。 所以我只获取那个并给予数据集进行处理。
我希望它有所帮助!!!!!!!!!!!!!!!!!!!!!!!!!!!