I ran into the same problem.  I found some code in the mail list archive
that does the transcoding of the UTF-16 into a vector of chars and then
populates an STL string by iterating through the vector from begin() to
end().  It turns out that code had a bug in it, the iteration through
the vector should stop at end() - 1.  The result of going to end() was
to place an extra NULL character in the data portion of the string so
that a string that was assigned, say, "file" would actually have 5
characters in the data() portion of the string so compare()s to "file"
would fail due to differing lengths.  I fixed that and encapsulated it
all into a class that I call XalanDomCString.  I've attached the class
header and implementation, and example of using it would be something
like:

catch (XSLException& ex)
{
    XalanDomCString myCString(ex.getMessage);
    Printf("caught XSLException, message is %s\n", myCString.c_str());
}

BTW, I did it as a nested class inside the main Profile class because
there was no need for it outside of the Profile.  YMMV.

HTH,

-will

-----Original Message-----
From: Coker, Jonathan M [mailto:[EMAIL PROTECTED] 
Sent: Wednesday, April 04, 2007 4:19 PM
To: xalan-c-users@xml.apache.org
Subject: Tangled strings

Hello,
   Thanks to David and Will for the help with moving the parser into a
class.  I have that working so I am moving on to more involved
development.  I am currently stumbling over the extraction of a C++
string from XalanDOMString after a call to XalanNode::getNodeValue().  I
am getting the the XalanDOMString but my attempts to transcode (like I
did in Xerces) have failed.  I have not gone through all of the API
documents but I am hoping that I have just missed something simple.

Thanks again

Attachment: XalanDomCString.h
Description: XalanDomCString.h

Attachment: XalanDomCString.cpp
Description: XalanDomCString.cpp

Reply via email to