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> ...