无法将嵌套关系或元素列添加到包含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(); } 

在上面的示例中,我只想在响应流中使用“记录”节点。 所以我只获取那个并给予数据集进行处理。

我希望它有所帮助!!!!!!!!!!!!!!!!!!!!!!!!!!!