如何使用boost属性树提取xml文件的DOCTYPE节点?

时间:2015-04-21 14:04:15

标签: c++ xml boost

我找到了一些如何使用boost属性树来读取xml文件的精彩示例。然而,对我来说真正的头脑刮擦是提取DOCTYPE值。给定一个带有以下行的xml文件:

<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">

如果我这样做:

// Create an empty property tree object
boost::property_tree::ptree pt;

// Load the XML file into the property tree.
boost::property_tree::read_xml(filenameIn, pt);

// and then immediately write it back out again...
boost::property_tree::write_xml(filenameOut, pt);

我希望内容(filenameOut)== content(filenameIn)。

但事实并非如此。特别是缺少DOCTYPE节点。因此,如何提取DOCTYPE节点的值?

1 个答案:

答案 0 :(得分:3)

你不能。

PropertyTree是一个用于序列化/反序列化属性树的库,其格式可能很容易消耗。

PropertyTree 不是 XML库。或者是JSON库。

关于添加处理指令:您可以使用API​​的未记录部分: