2011-09-23 38 views
6

Hola iam escribir el códigoNo se puede agregar una relación anidada o una columna de elemento a una tabla que contiene una columna 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(); " 

y este error se happing

" No se puede añadir un anidado relación o una columna de elemento a una tabla que contiene una columna SimpleContent "

+0

La url en su ejemplo devuelve un recurso 404 no encontrado –

Respuesta

0

Parece que su xml contiene un elemento que tiene tanto elementos secundarios de texto (contenido simple) como otros elemento niños.

DataSet no permite que una tabla tenga tanto columnas de contenido simple como columnas de elementos.

Ver http://msdn2.microsoft.com/en-us/library/zx8h06sz.aspx

8

Tu problema es que tienes el mismo nombre del elemento con una estructura diferente en algún lugar del documento.

Así, por ejemplo, si usted tiene

<Item>Bicycle</Item> 

y más tarde en el documento que tienen

<Item Type="Sports"><Name>Bicycle</Name></Item> 

El XSD dejará de generar un esquema adecuado para el segundo artículo atribuir estructura porque es elemento ya definido como una columna de contenido simple basada en la declaración anterior.

La solución es (naturalmente) evitar el uso del mismo nombre de elemento para diferentes estructuras dentro de su XML. Obviamente, en su caso eso es un inconveniente ya que Microsoft posee el XML en cuestión (hipotéticamente, ya que el comentario de Deni indica que este sitio ya no existe). Tendría que usar XMLWriter o alguna variante para cambiar el nombre del elemento ofensivo. para algo único.

0

En mi caso, este error apareció en el lado del cliente WCF. En el lado del servidor WCF fue causado por un permiso SQL SELECT faltante en una función - System.Data.SqlClient.SqlException.

El cliente WCF que intentaba deserializar un conjunto de datos, que obviamente no estaba allí, siguió mostrando el error "No se puede agregar un SimpleContent ...". No lo llamaría un mensaje engañoso, sino uno que debe ser interpretado correctamente.

0

Creo que este error se mostrará cuando intente ReadXml desde Responsetext desde llamadas de servicio. En este caso, solo tiene que obtener el atributo de nodo necesario que necesita en formato outerxml. Aquellos que no son necesarios se saltan ese elemento.

por ejemplo

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(); 
       } 

En ejemplo anterior Quiero único nodo 'registros' en la secuencia de respuesta. De modo que estoy obteniendo solo ese & dado al conjunto de datos para su procesamiento.

Espero que ayude !!!!!!!!!!!!!!!!!!!!!!!!!!!

Cuestiones relacionadas