Reputation: 157
Trying to used "xmlTextReaderPreservePattern".
It does not work when i have namespace qualifiers in the xpath. I get seg faults.
I do have a need for multiple namespaces within the same xml.
Any ideas ?
const char *pattern = "/wrapper:TestMessage/wrapper:Header/head:Frame/head:Id/head:StoreId/head:SysId/head:UserId"; // does not give seg fault
//const char *pattern = "/TestMessage/Header/Frame/Id/StoreId/SysId/UserId"; //does give seg fault
const char *namespace = "xmlns='urn:wrapper' xmlns:head='urn:std:header:tech:xsd:headeVersion.001.001.01' xmlns:message='urn:std:message:tech:xsd:messageVersion.001.001.01' "; // ddoes not give seg fault
//const char *pattern = "test"; // does not give seg fault
//const char *namespace = "test"; // does not give seg fault
if (xmlTextReaderPreservePattern(reader, (const xmlChar *) pattern, (const xmlChar **) &namespace) < 0) {
fprintf(stderr, "%s : failed add preserve pattern %s\n", XMLFileName, (const char *) pattern);
}
Upvotes: 1
Views: 243
Reputation: 157
This works
const char *namespace[] = {"urn:wrapper", "wrapper", "urn:std:header:tech:xsd:headeVersion.001.001.01", "head", "urn:std:message:tech:xsd:messageVersion.001.001.01", "message"};
What does not work is xpath with functions like text(), for example.
onst char *pattern = "/wrapper:TestMessage/wrapper:Header/head:Frame/head:Id/head:StoreId/head:SysId/head:UserId/text()";
Upvotes: 2