Tôi phải viết một ứng dụng C++ (sử dụng khung Qt cho GUI) có thể chỉnh sửa dữ liệu được lưu trữ trong các tệp xml được mô tả bằng tệp lược đồ xsd. Có một công cụ để chuyển đổi lược đồ xsd thành các lớp C++ không?Lược đồ XML cho các lớp C++
Trả lời
Âm thanh với tôi như CodeSynthesis chính xác là những gì bạn đang tìm kiếm. Đó là mã nguồn mở và C++.
Altova XML Spy có thể tạo C++ từ XSD, đó là thương mại nhưng có bản dùng thử miễn phí 30 ngày nếu bạn muốn dùng thử.
Có một công cụ của Microsoft thực hiện điều này, tôi nghĩ, được gọi là xsd.exe (nhưng bản thân tôi chưa thử).
Codalogic LMX cũng là một tùy chọn.
Hệ thống khách quan, Inc. XBinder XML Schema Compiler (không chỉ für C++).
gSOAP Toolkit cũng có thể làm điều này! Nó nhẹ và hỗ trợ C/C++. Tôi đã sử dụng nó trong các dự án rất khắt khe với thành công. Ngoài ra, nó được cấp phép theo GPL2.
Tính di động: gSOAP hỗ trợ hầu hết các nền tảng, bao gồm hệ thống nhúng và hệ điều hành nhỏ (ví dụ: WinCE, Symbian và PalmOS). Khả năng di động được kiểm tra cho Windows (98, XP, Vista), Linux, Unix, Mac OS X, Solaris, HP-UX, AIX, FreeBSD, TRU64, Irix, QNX và VxWorks.
Xuất hiện để có cùng một giới hạn cấp phép như trình tạo mã CodeSynthesis. –
Xem XmlPlus-xsd2cpp tại Google:
XmlPlus xsd2cpp cung cấp "đơn giản để sử dụng" C++ XML data-binding qua W3C XML Schema.
Sử dụng XmlPlus được bao phủ bởi GNU Lesser General Public License
Xin lưu ý rằng công cụ này không phải bởi Google, công cụ này chỉ được lưu trữ tại Google Code. – Beginner
Tất cả các máy phát điện là hoàn toàn khủng khiếp.
XSD mô tả một hệ thống phân cấp lớp trong đó các lớp chứa các lớp con, có thể chứa các lớp con khác và tất cả những gì bạn muốn làm là biểu diễn nó theo cùng một cách.
Ví dụ, nếu đây là sơ đồ của bạn:
<xs:element name="shipto">
<xs:complexType>
<xs:sequence>
<xs:element name="name" type="xs:string"/>
<xs:element name="address" type="xs:string"/>
<xs:element name="city" type="xs:string"/>
<xs:element name="country" type="xs:string"/>
</xs:sequence>
</xs:complexType>
</xs:element>
Bạn muốn tạo ra một cái gì đó như:
class shipTo
{
private:
string name;
string address;
string city;
string country;
public:
set_Name();
get_Name();
...
}
Bạn sẽ không tìm thấy nó. Điều gần nhất tôi đã tìm thấy là xjc, dành cho Java.
Bạn mong đợi một cái gì đó như BASIC như chức năng này sẽ tồn tại, nhưng tôi chưa tìm thấy nó, và có, tôi đã sử dụng Altova XML-Spy. Tôi thực sự ngạc nhiên khi bất kỳ ai đề xuất điều này như một bộ tạo mã. Mã được tạo ra của nó là hoàn toàn khủng khiếp.
Tôi đang viết một trình phân tích cú pháp lex/bison để làm điều này cho dự án của tôi bởi vì tất cả các công cụ tôi đã có thể tìm thấy cho đến nay tạo ra mã khá khủng khiếp. Altova có thời gian dùng thử 30 ngày, nếu bạn không tin tôi, hãy thử nó. Nó dễ dàng hơn để viết một trình phân tích cú pháp lex/bison cho XSD của tôi hơn là sử dụng một gói mã chuyên nghiệp $ 500 để tạo ra một biểu diễn lớp khủng khiếp.
Tôi không thể tin rằng mọi người sử dụng XML trong C++ vì các công cụ cho nó là khủng khiếp.
Bạn có thể chỉ cho chúng tôi một ví dụ về những gì "công cụ xấu" sản xuất và giải thích tại sao bạn nghĩ rằng nó là xấu? –
Không thể trả lời vì tôi bị kẹt trong "định dạng đánh dấu mini" ở đây. Tôi đã cung cấp cho bạn một lược đồ ví dụ - hãy tiếp tục và chạy điệp viên XML của Altova trên đó và so sánh với ví dụ MY hand rolling XSD-> C++ lex/bison/hack tạo ra. Đi trước. Tôi không phải là LEAST ấn tượng với các công cụ có sẵn. XJC tạo ra mã khá tốt, tuy nhiên, nó nằm trong Java nên nó không phù hợp với tôi. Tôi cảm thấy như tôi đang làm việc với dao đá và da gấu. – user6269400
Không có điệp viên Altova ... hãy xem cấu trúc lớp được đề xuất của bạn và đồng ý có vẻ hợp lý. Có lẽ bạn có thể giải thích trong 1-2 câu mà Altova làm mà bạn không thích. –
- 1. Lược đồ XML cho các lớp Java với XJC
- 2. Trình tạo mã XML lược đồ C++
- 3. Nhiều tệp lược đồ XSD cho các lớp C#
- 4. xác thực lược đồ XML
- 5. Tạo Lược đồ XML từ lớp Java (hoặc đối diện)
- 6. Visual Studio 2010: Lược đồ XML XSD cho các lớp trong IDE
- 7. Tạo lược đồ Json từ lược đồ XML (XSD)
- 8. Công cụ C++ để tạo các tệp XML ngẫu nhiên từ Lược đồ XML?
- 9. Tạo các lớp jaxb từ lược đồ
- 10. Xác thực lược đồ XML của XElement
- 11. Lỗi lược đồ cấu hình XML SpringSocial
- 12. chỉ định loại cho IDREF trong lược đồ XML
- 13. Lược đồ XML cho SimpleType và thuộc tính?
- 14. Lược đồ cho <project> XML trong gói Sitecore
- 15. Xác thực Xml bằng lược đồ XSD
- 16. Cách tạo các lớp được tạo có chứa Javadoc từ tài liệu Lược đồ XML
- 17. Tạo thể hiện XML từ lược đồ XML (xsd)
- 18. Các lược đồ XML có nhiều thừa kế
- 19. Thứ tự lược đồ XML của các phần tử
- 20. Tạo hibernate hbm xml tệp & các lớp thực thể từ lược đồ DB hiện tại
- 21. So sánh hai Lược đồ XML
- 22. Các lược đồ cho các tệp XML trong một dự án Android ở đâu?
- 23. Sử dụng XSD.exe để tạo các lớp C# từ nhiều lược đồ XSD
- 24. Tạo GUI từ một lược đồ XML tự động
- 25. Tôi có thể có một Lược đồ XML (XSD) bao gồm một Lược đồ XML khác không?
- 26. Cách tạo lược đồ xml với khóa/keyref cho các phần tử lồng nhau cùng loại
- 27. Định nghĩa kiểu lược đồ XML cho các giá trị XPath?
- 28. Tạo lược đồ JSON từ lớp Java
- 29. Xác thực lược đồ XML đồng bộ? NET 3.5
- 30. Lược đồ cơ sở dữ liệu HR-XML
Cần lưu ý rằng * nguồn mở * hơi phức tạp ở đây. Mã được tạo bởi * CodeSynthesis * cũng được bao gồm trong giấy phép GPL, do đó bạn không thể sử dụng nó trong ứng dụng của mình mà không cần phân phối mã nguồn của toàn bộ ứng dụng của bạn. Có những ngoại lệ cho [sử dụng khối lượng thấp] (http://www.codesynthesis.com/products/xsd/free-license.xhtml) hoặc giấy phép sở hữu độc quyền để mua mặc dù. – Jarekczek