我必须编写一个C ++应用程序(使用GUI的Qt框架),它可以编辑存储在xsd模式文件描述的xml文件中的数据。是否有工具将xsd模式转换为C ++类?
答案 0 :(得分:24)
对我而言CodeSynthesis就像你正在寻找的那样。它是开源的和c ++。
答案 1 :(得分:4)
Altova XML Spy可以从XSD生成C ++,它是商业化的,但如果您想尝试一下,可以免费试用30天。
答案 2 :(得分:4)
gSOAP Toolkit也可以这样做!它很轻巧,并且支持C / C ++。我已经在非常苛刻的项目中成功使用它。此外,它根据GPL2获得许可。
可移植性:gSOAP支持大多数平台,包括嵌入式系统和小型操作系统(例如WinCE,Symbian和PalmOS)。针对Windows(98,XP,Vista),Linux,Unix,Mac OS X,Solaris,HP-UX,AIX,FreeBSD,TRU64,Irix,QNX和VxWorks测试了可移植性。
答案 3 :(得分:4)
请参阅Google上的XmlPlus-xsd2cpp:
涵盖XmlPlus的使用XmlPlus xsd2cpp提供“简单易用”的C ++ XML数据绑定 W3C XML-Schema。
答案 4 :(得分:3)
Codalogic LMX也是一种选择。
答案 5 :(得分:3)
Objective Systems,Inc。XBinder XML Schema Compiler(不仅仅是C ++)。
答案 6 :(得分:1)
我认为有一个Microsoft工具可以执行此操作,称为xsd.exe(但我自己没有尝试过)。
答案 7 :(得分:0)
所有发电机都非常糟糕。
XSD描述了一个类层次结构,其中类包含子类,这些子类可能包含其他子类,您想要做的只是以相同的方式表示它。
例如,如果这是您的架构:
<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>
你想要产生类似的东西:
class shipTo
{
private:
string name;
string address;
string city;
string country;
public:
set_Name();
get_Name();
...
}
你不会找到它。我发现的最接近的是xjc,它适用于Java。
你会期待某些东西作为BASIC,因为这个功能会存在,但我还没有找到它,是的,我使用过Altova XML-Spy。我很惊讶任何人都会建议将其作为代码生成器。它生成的代码非常糟糕。
我正在编写一个lex / bison解析器来为我的项目执行此操作,因为到目前为止我能够找到的所有工具都会产生相当可怕的代码。 Altova有30天的试用期,如果你不相信我,试试吧。为我的XSD编写一个lex / bison解析器比使用一个产生可怕类表示的$ 500专业代码包更容易。
我无法相信人们在C ++中使用XML,因为它的工具非常糟糕。