Alberto
At 12.13 18/02/2004 +0100, Joerg Toellner wrote:
Hi Group,
i now tried the first time the new (since Xerces 2.4.0 i think) XPath Interface. But with no big success :-(. I can't find a sample or figure out what i'm doing wrong. So i kindly ask for your help. Other Xerces DOM stuff works like charm (i parse this XML-Document and change some elements/attributes a.s.o.). I am using Microsoft Visual Studio 6.0 and Xerces 2.4.0. Windows-binaries package from xml.apache site.
The Problem: ------------
I have to get some (selected, wide spread over the whole XML-File) attribute-values from within a bigger XML file. So i think a XPath is the best for that, isn't it? I wrote a little Testsnippet to try it out. Here is what i've done so far:
--------------------SNIP----------------------- // Note: X() is a macro for transcoding char to XMLChar // X2C() is the reverse macro for transcoding XMLChar to Char
DOMImplementation *impl; DOMXPathResult *xpres; DOMBuilder *builder; DOMDocument *doc; DOMXPathEvaluator *xpeval; char tmpbuf[1024];
// Initialize XERCES DOM impl = dom_Init();
builder = ((DOMImplementationLS*) impl)->
createDOMBuilder(DOMImplementationLS::MODE_SYNCHRONOUS, 0);
doc = builder->parseURI(X("./testdata/test_105.xml")); xpeval = (DOMXPathEvaluator *) doc;
try { xpres = (DOMXPathResult *) xpeval->evaluate(X("/cdh/id/@RT"), doc->getDocumentElement(), NULL, DOMXPathResult::STRING_TYPE, NULL); } catch(const DOMXPathException& xp) { sprintf(tmpbuf, "Exception Code: %d", xp.code); MessageBox(NULL, tmpbuf, "XPathException", MB_OK); } catch(const DOMException& de) { sprintf(tmpbuf, "Exception Code: %d", de.code); MessageBox(NULL, tmpbuf, "DOMException", MB_OK); }
sprintf(tmpbuf, "<%s>", X2C(xpres->getStringValue())); MessageBox(NULL, tmpbuf, "XPathTest", MB_OK);
builder->releas(); dom_DeInit(); --------------------SNIP-----------------------
The XML-File is like this (only the relevant part):
--------------------SNIP----------------------- <?xml version="1.0" encoding="iso-8859-1"?> <?xml-stylesheet type="text/xsl" href="sci_arztbrief-2.xsl"?> <levelone xmlns="urn::hl7-org/cda" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:sciphox="urn::sciphox-org/sciphox" xsi:schemaLocation="urn::hl7-org/cda sciphox-cda.xsd"> <cdh> <id RT="#cdh.docid.rt" EX="#cdh.docid.ex"/> <set_id RT="#cdh.docsetid.rt" EX="#cdh.docsetid.ex"/> <version_nbr V="#cdh.docvers"/> ... blah blah blah </cdh> ... blah blah blah </levelone> --------------------SNIP-----------------------
I want to get the Value of the RT Attribute from the ID-Element within the cdh element. I want to get "#cdh.docid.rt" as the result.
But i only get a DOMException Code 9 (Not supported) which meaning is either the context node is not valid or the type is not supported by the DOMXPathEvaluator. I don't understand what this could mean in my case.
Any hint, sample, documentation appreciated. Thanks in Advance very much. Oh...and by the way...it is a little bit urgent. So if you can afford time a "asap" answer would help me muuuuuuch.
CU Joerg
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
