C# 无法将嵌套关系或元素列添加到包含SimpleContent列的表中

C# 无法将嵌套关系或元素列添加到包含SimpleContent列的表中,c#,asp.net,database,C#,Asp.net,Database,嗨,我写这段代码 这个错误正在发生 无法将嵌套关系或元素列添加到包含SimpleContent列的表中您的xml似乎包含同时具有文本子元素simple content和其他元素子元素的元素 DataSet不允许表同时具有简单内容列和元素列 请参见您的问题是,文档中的某个位置具有相同的元素名称和不同的结构 例如,如果你有 <Item>Bicycle</Item> 稍后在文档中 <Item Type="Sports"><Name>Bicycle&l

嗨,我写这段代码

这个错误正在发生


无法将嵌套关系或元素列添加到包含SimpleContent列的表中

您的xml似乎包含同时具有文本子元素simple content和其他元素子元素的元素

DataSet不允许表同时具有简单内容列和元素列


请参见

您的问题是,文档中的某个位置具有相同的元素名称和不同的结构

例如,如果你有

<Item>Bicycle</Item>
稍后在文档中

<Item Type="Sports"><Name>Bicycle</Name></Item>
XSD将无法为第二个Item属性结构生成正确的模式,因为它已经根据前面的声明将Item定义为SimpleContent列


解决方案是自然避免对XML中的不同结构使用相同的元素名称。显然,在您的情况下,这有点不方便,因为Microsoft假设拥有所讨论的XML,因为Deni的评论表明该站点不再存在。您必须使用XMLWriter或某种变体将有问题的元素的名称替换为唯一的名称。

在我的例子中,此错误出现在WCF客户端。在WCF服务器端,这是由于缺少对函数-System.Data.SqlClient.SqlException的SQL SELECT权限造成的


WCF客户端试图反序列化数据集,但数据集显然不存在,无法添加SimpleContent。。。错误我不认为这是一条误导性的消息,而是一条必须正确解释的消息。

我认为当您试图从服务调用的Responsetext读取XML时,会显示此错误。在本例中,只需获取所需的outerxml格式的节点属性。不必要的人跳过该元素

例如

在上面的示例中,我只需要响应流中的“records”节点。因此,我只获取它&提供给数据集进行处理


我希望这会有帮助

示例中的url返回未找到的404资源
<Item Type="Sports"><Name>Bicycle</Name></Item>
 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();
                }