2009-03-08 23 views
7

Tôi đã tạo ra một số lớp C# từ một XSD bằng cách sử dụng tiện ích Visual Studio XSD và nó tạo ra các mảng để lưu trữ một bộ sưu tập các phần tử chứ không phải là một trong những bộ sưu tập chung chung <T> (hoặc các lớp liên quan).Visual Studio XSD Tool: Tạo các bộ sưu tập thay vì các mảng

Không có tham số dòng lệnh nào được đề cập trong xsd /? đề cập đến bất cứ điều gì về việc tạo ra các bộ sưu tập chứ không phải là mảng, nhưng tôi biết rằng điều này có thể được thực hiện với các lớp proxy dịch vụ web mà Visual Studio tạo ra, vì vậy tôi figured nó phải có thể.

Có ai biết cách để tiện ích XSD tạo ra các lớp sưu tập thay vì mảng không?

+0

Bạn có thể tìm thấy câu trả lời của tôi ở đây -> http://stackoverflow.com/a/24557248/1125467 – vivekp

Trả lời

1

Vấn đề là XSD là ngôn ngữ bất khả tri về ngôn ngữ XML. Nó không thể sử dụng bất cứ thứ gì từ Java hoặc C# mà cái kia không hỗ trợ. Mảng là mẫu số chung thấp nhất.

Các nhà phát triển Java sử dụng các thư viện OXM như XStream để so khớp các đối tượng với XML và ngược lại. Nó cho phép bạn chỉ định các kiểu tùy chỉnh khi đi từ các đối tượng đến XML. Âm thanh như bạn sẽ phải tìm một cái gì đó tương tự trong hộp công cụ .NET.

Đây không phải là câu trả lời cho câu hỏi của bạn, nhưng đó là lý do tại sao tôi nghĩ XSD sẽ không thực hiện công việc. Giống như một nhà phát triển Java tiếp cận XStream, bạn sẽ phải tìm nơi khác.

1

Bạn đã thấy khả năng sử dụng các bộ sưu tập có Tham khảo dịch vụ, không phải với Tham khảo web. Hãy xem tiện ích svcutil.exe để thay thế. Có vẻ như svcutil/t: code file.xsd có thể làm điều này cho bạn.

1

Tôi không biết bất kỳ công cụ nào tại thời điểm này thực hiện điều này một cách đáng tin cậy, thật không may.

Có một XSDObjectGen (hoặc một cái gì đó như thế) nhưng công cụ mà dường như đã biến mất khỏi khuôn mặt của không gian mạng :-(

tôi thấy một cách tiếp cận sử dụng XSDTidy để áp dụng một loại một sự thay thế của tất cả các int [] vào Danh sách so với sản lượng của công cụ XSD - dường như đã làm việc, nhưng có vẻ một chút thời gian

Dưới đây là một CodeProject article on XSDTidy

điều tôi đã cố gắng để tìm lại là một bài viết trên blog của.. một quý ông về cơ bản đã mổ xẻ các hoạt động bên trong của XSD trong Reflector, và sau đó sử dụng kiến ​​thức mà ông đã đạt được trên đó để xây dựng công cụ của riêng mình, sử dụng rất nhiều lớp lõi .NET. Nếu tôi nhớ chính xác, nó là this blog post here ("writing your own xsd.exe"). Mike không chính xác làm những gì bạn đang tìm kiếm (tạo Danh sách thay vì mảng), nhưng nó có thể là một điểm khởi đầu.

Marc

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