在Windows下使用的C ++ XML库

时间:2010-10-19 08:35:05

标签: c++ windows xml

在Windows下解析XML可以使用基于COM的XML API,但我想知道是否有任何C ++ XML库可以用于此目的,而不需要进入COM的复杂性?

8 个答案:

答案 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)

一个简单的谷歌搜索为我找到了很多除了Xerces(最常用的)之外的C ++ XML解析器。

我不知道他们有多好。这是两个:

libXML

TinyXML

答案 6 :(得分:0)

boost.property_tree 具有XML解析器(基于RapidXml)。

它只是标题,除了Boost之外没有依赖项。

答案 7 :(得分:0)

我在C ++中使用过xercesexpat(两个C库)。两者都做得很好,但如果我再次重写我的代码,我可能会使用libxml2。 Xerces IMO太大而且压倒性地满足了我的需求,而expat太低了。我的理解是libxml2是一个很好的高级库。 (我已经广泛使用了libxml2的lxml python绑定 - 它们工作得很漂亮。)。

哦,我曾经使用过tinyxml(几年前),但发现它的DOM模型对我的需求来说太慢了。