2011-09-23 21 views
6

Hi iam viết mã nàyKhông thể thêm một mối quan hệ lồng nhau hoặc một cột yếu tố để một bảng chứa một cột 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(); " 

và lỗi này được happing

" Không thể thêm một lồng nhau quan hệ hoặc cột phần tử vào bảng chứa cột SimpleContent "

+0

Url trong ví dụ của bạn trả lại tài nguyên 404 không tìm thấy –

Trả lời

0

Dường như xml của bạn chứa phần tử có cả con văn bản (nội dung đơn giản) và các phần tử khác yếu tố trẻ em.

Số liệu không cho phép bảng có cả cột nội dung đơn giản cũng như cột phần tử.

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

8

Vấn đề của bạn là bạn có tên cùng một nguyên tố có cấu trúc khác nhau ở đâu đó trong tài liệu.

Vì vậy, ví dụ, nếu bạn có

<Item>Bicycle</Item> 

và sau đó trong tài liệu bạn có

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

Các XSD sẽ thất bại trong việc tạo ra một sơ đồ thích hợp cho các mục thứ hai cấu trúc thuộc tính bởi vì nó đã định nghĩa mục là cột SimpleContent dựa trên khai báo trước đó.

Giải pháp là (tự nhiên) tránh sử dụng cùng tên phần tử cho các cấu trúc khác nhau trong XML của bạn. Rõ ràng là trong trường hợp của bạn, điều này thật bất tiện vì Microsoft sở hữu XML được đề cập (giả thuyết, vì nhận xét từ Deni cho biết trang này không còn tồn tại nữa.) Bạn phải sử dụng XMLWriter hoặc một số biến thể để đổi tên thành phần tử vi phạm cho một cái gì đó độc đáo.

0

Trong trường hợp của tôi, lỗi này xuất hiện ở phía máy khách WCF. Về phía máy chủ WCF nó đã được gây ra bởi thiếu quyền SELECT SQL trên một chức năng - System.Data.SqlClient.SqlException.

Máy khách WCF cố gắng deserialize một tập dữ liệu, mà rõ ràng là không có, tiếp tục hiển thị "Không thể thêm một SimpleContent ..." lỗi. Tôi sẽ không gọi nó là một thông điệp gây hiểu nhầm, mà là một thông điệp phải được diễn giải đúng cách.

0

Tôi nghĩ lỗi này sẽ hiển thị khi bạn đang cố gắng đọc ReadXml từ Responsetext từ các cuộc gọi dịch vụ. Trong trường hợp này, chỉ cần tìm thuộc tính nút cần thiết mà bạn yêu cầu ở định dạng outerxml. Những người không cần phải bỏ qua yếu tố đó.

ví dụ

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

Trong ví dụ trên tôi muốn chỉ nút 'ghi' trong dòng phản ứng. Vì vậy, tôi chỉ tìm nạp & được cung cấp cho bộ dữ liệu để xử lý.

Tôi hy vọng nó sẽ giúp !!!!!!!!!!!!!!!!!!!!!!!!!!!

Các vấn đề liên quan