在Windows下解析XML可以使用基于COM的XML API,但我想知道是否有任何C ++ XML库可以用于此目的,而不需要进入COM的复杂性?
答案 0 :(得分:3)
我建议pugixml。 Pugixml是Light-weight, simple and fast XML parser for C++ with XPath support
以下为quick start guide,此处为benchmark,请注意AsmXML仅比pugixml更快。
答案 1 :(得分:2)
当然可以。
如果您不需要验证,我建议使用TinyXML++,这也很简单:
ticpp::Document doc(pcFilename);
doc.LoadFile();
// parse through all elements
std::string strName;
std::string strValue;
ticpp::Iterator<ticpp::Element> child;
for(child = child.begin(doc.FirstChildElement()); child != child.end(); child++)
{
// parse through all the attributes of this fruit
ticpp::Iterator< ticpp::Attribute > attribute;
for(attribute = attribute.begin(child.Get()); attribute != attribute.end(); attribute++)
{
attribute->GetName(&strName);
attribute->GetValue(&strValue);
std::cout << strName << ": " << strValue << std::endl;
}
std::cout << std::endl;
}
如果您需要验证,请考虑使用XercesC++。
答案 2 :(得分:2)
AFAIK,现在是C,C#,C ++和Java最高效的开源解析器库VTD-XML。在性能方面,它胜过DOM,SAX和XPath。我已经将库转换为Delphi用于我的私有项目,我发现VTD-XML就像它声称的那样。请参阅VTD-XML Benchmark。
答案 3 :(得分:1)
我过去使用XercesC++效果很好。我最近使用的MSXML在比较中都很痛苦。
答案 4 :(得分:0)
Expat XML Parser也很好。我想你会在某个地方找到一个C ++ wapper。 http://expat.sourceforge.net/
答案 5 :(得分:0)
答案 6 :(得分:0)
boost.property_tree 具有XML解析器(基于RapidXml)。
它只是标题,除了Boost之外没有依赖项。
答案 7 :(得分:0)