我使用 xsd 3.3.0 编译器来将 xsd(xml 最好的 friend )文件解析为 C++ 类。 (见最后一个网页链接)
命令名称是
xsd cxx-tree (options) file.xsd
(+信息http://www.codesynthesis.com/projects/xsd/documentation/cxx/tree/guide/)
我看过 codesynthesis 提供的一些示例,它们在其中解析 hello.xsd 文档并非常轻松地创建 .hxx 和 .cxx 文件。 .hxx 有一种打开 xml 文档的方法,它创建一个对象,您可以在其中找到 xml 的不同部分,检查它等等...... .hxx 有这样的代码:
// Parse a URI or a local file.
//
::std::auto_ptr< ::hello_t >
hello (const ::std::string& uri,
::xml_schema::flags f = 0,
const ::xml_schema::properties& p = ::xml_schema::properties ());
它接收一个带有文件名的字符串
string& uri = "hello.xsd"
并创建您在 main.cxx 中使用的对象。
因此,我正在尝试对我的 xsd 文件执行相同的操作。我使用 xsd cxx-tree 编译器,但它没有创建“解析 URI 或本地文件”的方法。然后我无法在我的主程序上从 xml 文件创建对象。
我使用 codesys 编译器文档 (http://www.codesynthesis.com/projects/xsd/documentation/xsd.xhtml) 中的不同选项解决了一些编译问题。关于你想编译什么,你想怎么做等等,有不同的选项......但我找不到任何选项来启用用于“解析 URI 或本地文件”的方法。
给出更多信息,xml-xsd文件是CBML协议(protocol)文件。
感谢您的帮助!
最佳答案
我自己找到了解决方案!
我使用了不同的编译选项。我使用了选项“--root-element library”,它导致方法“解析 URI 或本地文件”。未创建。
我删除了这个选项并添加了“--root-element-all”为所有主体对象创建解析方法!
现在我的程序可以运行了!谢谢!
关于c++ - 使用 xsd cxx-tree 解析器的 XSD 到 C++ 类。从文件打开 xml 的方法。,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22039373/