14.8. Evaluating an XPath Expression

Problem

You want to extract information from a parsed XML document by evaluating an XPath expression.

Solution

Use the Xalan library. First, parse the XML document to obtain a pointer to a xalanc::XalanDocument. This can be done by using instances of XalanSourceTreeInit, XalanSourceTreeDOMSupport, and XalanSourceTreeParserLiaison—each defined in the namespace xalanc—like so:

#include <xercesc/framework/LocalFileInputSource.hpp>
#include <xalanc/XalanSourceTree/XalanSourceTreeDOMSupport.hpp>
#include <xalanc/XalanSourceTree/XalanSourceTreeInit.hpp>
#include <xalanc/XalanSourceTree/XalanSourceTreeParserLiaison.hpp>
...
int main()
{
     ...
     // Initialize the XalanSourceTree subsystem
     XalanSourceTreeInit           init;
     XalanSourceTreeDOMSupport     support; 

     // Interface to the parser
     XalanSourceTreeParserLiaison  liaison(support);

     // Hook DOMSupport to ParserLiaison
     support.setParserLiaison(&liaison);  
     LocalFileInputSource          src(document-location);
     XalanDocument*                doc = liason.ParseXMLStream(doc);
    ...
}

Alternatively, you can use the Xerces DOM parser to obtain a pointer to a DOMDocument, as in Example 14-14, and then use instances of XercesDOMSupport, XercesParserLiaison, and XercesDOMWrapperParsedSource — each defined in namespace xalanc — to obtain a pointer to a XalanDocument corresponding to the DOMDocument:

#include <xercesc/dom/DOM.hpp> #include <xalanc/XalanTransformer/XercesDOMWrapperParsedSource.hpp> #include <xalanc/XercesParserLiaison/XercesParserLiaison.hpp> ...

Get C++ Cookbook now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.