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.