代码综合 - C++/Tree子节点序列化

Nun*_*uno 6 c++ mapping tree codesynthesis

我正在使用这个伟大的工具(http://www.codesynthesis.com/products/xsd/c++/tree/)将xsd转换为c ++代码.

我正在尝试从子节点获取xml字符串,但我唯一可以获得的是所有xml,如下所示:

所有xml:

<?xml version="1.0"?>
<people ....>

  <person id="1">
    <first-name>John</first-name>
    <address>
      ....
    </address>
  </person>
...
Run Code Online (Sandbox Code Playgroud)

我可以得到所有xml做这样的事情:

people_t& p = ...
xml_schema::namespace_infomap map;
map[""].schema = "people.xsd";

// Serialize to a string.
//
std::ostringstream oss;
people (oss, p, map);
std::string xml (oss.str ());
Run Code Online (Sandbox Code Playgroud)

但我想要的只是获取<address> xml子节点.这有可能吗?怎么可以完成?

谢谢

DGe*_*try 0

如果我明白你在问什么,我想你想使用 no_xml_declaration 标志。

people (oss, p, map, "UTF-8",
        xml_schema::flags::no_xml_declaration);
Run Code Online (Sandbox Code Playgroud)

这会抑制 XML 声明,但对于 Xerces-C 的某些版本,它会在开头产生一个虚假的换行符,您需要将其删除。 http://www.codesynthesis.com/pipermail/xsd-users/2009-December/002625.html

对于稍后引用此问题的其他人,您还需要使用 --generate-serialization 调用 xsdcxx。默认情况下仅发出解析方法。

xsdcxx cxx-tree --generate-serialization {source XSD files}
Run Code Online (Sandbox Code Playgroud)