本文整理汇总了C++中xmlParseMemory函数的典型用法代码示例。如果您正苦于以下问题:C++ xmlParseMemory函数的具体用法?C++ xmlParseMemory怎么用?C++ xmlParseMemory使用的例子?那么, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了xmlParseMemory函数的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: check_icu_iter2
static void check_icu_iter2(void)
{
UErrorCode status = U_ZERO_ERROR;
struct icu_chain *chain = 0;
xmlNode *xml_node;
const char *xml_str = "<icu locale=\"en\">"
"<transform rule=\"[:Control:] Any-Remove\"/>"
"<tokenize rule=\"l\"/>"
"<tokenize rule=\"w\"/>"
"<transform rule=\"[[:WhiteSpace:][:Punctuation:]] Remove\"/>"
"<display/>"
"<casemap rule=\"l\"/>"
"</icu>";
xmlDoc *doc = xmlParseMemory(xml_str, strlen(xml_str));
YAZ_CHECK(doc);
if (!doc)
return;
xml_node = xmlDocGetRootElement(doc);
YAZ_CHECK(xml_node);
if (!xml_node)
return ;
chain = icu_chain_xml_config(xml_node, 1, &status);
xmlFreeDoc(doc);
YAZ_CHECK(chain);
if (!chain)
return;
YAZ_CHECK(test_iter(chain, "Adobe Acrobat Reader, 1991-1999.",
"[adobe][acrobat][reader][1991][][1999][]"));
YAZ_CHECK(test_iter(chain, "Νόταρης, Γιάννης Σωτ",
"[νόταρης][γιάννης][σωτ]"));
check_iter_threads(chain);
icu_chain_destroy(chain);
}
示例2: cmd_settings
static void cmd_settings(struct http_channel *c)
{
struct http_response *rs = c->response;
struct http_request *rq = c->request;
struct http_session *s = locate_session(c);
const char *content_type = http_lookup_header(rq->headers, "Content-Type");
if (!s)
return;
if (rq->content_len && content_type &&
!yaz_strcmp_del("text/xml", content_type, "; "))
{
xmlDoc *doc = xmlParseMemory(rq->content_buf, rq->content_len);
xmlNode *root_n;
int ret;
if (!doc)
{
error(rs, PAZPAR2_MALFORMED_SETTING, 0);
release_session(c,s);
return;
}
root_n = xmlDocGetRootElement(doc);
ret = settings_read_node_x(root_n, s->psession, apply_local_setting);
xmlFreeDoc(doc);
if (ret)
{
error(rs, PAZPAR2_MALFORMED_SETTING, 0);
release_session(c,s);
return;
}
}
if (process_settings(s->psession, rq, rs) < 0)
{
release_session(c, s);
return;
}
response_open(c, "settings");
response_close(c, "settings");
release_session(c, s);
}
示例3: php_xml2array_parse
static void php_xml2array_parse(zval* return_value, char * xml_str, long xml_len) {
xmlKeepBlanksDefault(0);
xmlDoc *doc = xmlParseMemory(xml_str, xml_len);
xmlNode *root_element;
if (doc == NULL) {
return;
} else {
root_element = xmlDocGetRootElement(doc);
zval *z;
z = (zval *) php_xml2array_loop(root_element);
*return_value = *z;
xmlFreeDoc(doc);;
efree(z);
}
xmlCleanupParser();
}
示例4: generate_edit_buddylist_body
char* generate_edit_buddylist_body(int id , const char* name)
{
char args[] = "<args></args>";
char ids[128];
xmlChar *res;
xmlDocPtr doc;
xmlNodePtr node;
doc = xmlParseMemory(args , strlen(args));
node = xmlDocGetRootElement(doc);
node = xmlNewChild(node , NULL , BAD_CAST "contacts" , NULL);
node = xmlNewChild(node , NULL , BAD_CAST "buddy-lists" , NULL);
node = xmlNewChild(node , NULL , BAD_CAST "buddy-list" , NULL);
xmlNewProp(node , BAD_CAST "name" , BAD_CAST name);
memset(ids, 0, sizeof(ids));
snprintf(ids, sizeof(ids) - 1 , "%d" , id);
xmlNewProp(node , BAD_CAST "id" , BAD_CAST ids);
xmlDocDumpMemory(doc , &res , NULL);
xmlFreeDoc(doc);
return xml_convert(res);
}
示例5: gretl_bundle_new
gretl_bundle *gretl_bundle_read_from_buffer (const char *buf, int len,
int *err)
{
xmlDocPtr doc = NULL;
gretl_bundle *b;
b = gretl_bundle_new();
if (b == NULL) {
*err = E_ALLOC;
return NULL;
}
xmlKeepBlanksDefault(0);
doc = xmlParseMemory(buf, len);
if (doc == NULL) {
gretl_errmsg_set(_("xmlParseMemory failed"));
*err = 1;
} else {
xmlNodePtr cur = xmlDocGetRootElement(doc);
if (cur == NULL) {
gretl_errmsg_set(_("xmlDocGetRootElement failed"));
*err = 1;
} else {
gretl_push_c_numeric_locale();
cur = cur->xmlChildrenNode;
*err = load_bundled_items(b, cur, doc);
gretl_pop_c_numeric_locale();
}
xmlFreeDoc(doc);
}
if (*err) {
gretl_bundle_destroy(b);
b = NULL;
}
return b;
}
示例6: check_chain_empty_chain
static void check_chain_empty_chain(void)
{
UErrorCode status = U_ZERO_ERROR;
struct icu_chain *chain = 0;
const char *xml_str = "<icu locale=\"en\">"
"</icu>";
const char *src8 = "some 5487 weired !¤%&(/& sTuFf";
char *dest8 = 0;
xmlDoc *doc = xmlParseMemory(xml_str, strlen(xml_str));
xmlNode *xml_node = xmlDocGetRootElement(doc);
YAZ_CHECK(xml_node);
chain = icu_chain_xml_config(xml_node, 0, &status);
xmlFreeDoc(doc);
YAZ_CHECK(chain);
YAZ_CHECK(icu_chain_assign_cstr(
chain, src8,
&status));
while (icu_chain_next_token(chain, &status))
{
;
/* printf("%d '%s' '%s'\n",
icu_chain_token_number(chain),
icu_chain_token_norm(chain),
icu_chain_token_display(chain)); */
}
YAZ_CHECK_EQ(icu_chain_token_number(chain), 1);
dest8 = (char *) icu_chain_token_norm(chain);
YAZ_CHECK_EQ(strcmp(src8, dest8), 0);
icu_chain_destroy(chain);
}
示例7: s
//---------------------------------------------------------------------------
int XsltPolicy::create_policy_from_mi(const std::string& report)
{
Xslt s(no_https);
xmlSetGenericErrorFunc(&s, &s.manage_generic_error);
xmlDocPtr doc = xmlParseMemory(report.c_str(), report.length());
xmlSetGenericErrorFunc(NULL, NULL);
if (!doc)
{
// maybe put the errors from s.errors
error = "The MediaInfo report given cannot be parsed";
return -1;
}
xmlNodePtr root = xmlDocGetRootElement(doc);
if (!root)
{
error = "No root node, leaving";
xmlFreeDoc(doc);
return 0;
}
for (xmlNodePtr child = root->children; child; child = child->next)
{
std::string def("media");
if (child->type == XML_TEXT_NODE || !child->name || def.compare((const char*)child->name))
continue;
if (find_media_track_node(child) < 0)
{
xmlFreeDoc(doc);
return -1;
}
break;
}
xmlFreeDoc(doc);
return 0;
}
示例8: pgxml_xpath
static xmlXPathObjectPtr
pgxml_xpath(text *document, xmlChar *xpath, xpath_workspace *workspace)
{
int32 docsize = VARSIZE(document) - VARHDRSZ;
xmlXPathObjectPtr res;
xmlXPathCompExprPtr comppath;
workspace->doctree = NULL;
workspace->ctxt = NULL;
workspace->res = NULL;
pgxml_parser_init();
workspace->doctree = xmlParseMemory((char *) VARDATA(document), docsize);
if (workspace->doctree == NULL)
return NULL; /* not well-formed */
workspace->ctxt = xmlXPathNewContext(workspace->doctree);
workspace->ctxt->node = xmlDocGetRootElement(workspace->doctree);
/* compile the path */
comppath = xmlXPathCompile(xpath);
if (comppath == NULL)
{
cleanup_workspace(workspace);
xml_ereport(ERROR, ERRCODE_EXTERNAL_ROUTINE_EXCEPTION,
"XPath Syntax Error");
}
/* Now evaluate the path expression. */
res = xmlXPathCompiledEval(comppath, workspace->ctxt);
workspace->res = res;
xmlXPathFreeCompExpr(comppath);
if (res == NULL)
cleanup_workspace(workspace);
return res;
}
示例9: mavlink_parseDoc
static void mavlink_parseDoc (char *docname) {
xmlDocPtr doc;
xmlNodePtr cur;
if (strncmp(docname, "./", 2) == 0) {
docname += 2;
}
char *buffer = NULL;
int len = 0;
SDL_RWops *ops_file = SDL_RWFromFile(docname, "r");
if (ops_file == NULL) {
SDL_Log("map: Document open failed: %s\n", docname);
return;
}
len = SDL_RWseek(ops_file, 0, SEEK_END);
SDL_RWseek(ops_file, 0, SEEK_SET);
buffer = malloc(len);
SDL_RWread(ops_file, buffer, 1, len);
doc = xmlParseMemory(buffer, len);
SDL_RWclose(ops_file);
free(buffer);
if (doc == NULL) {
SDL_Log("mavlink: Document parsing failed: %s\n", docname);
return;
}
cur = xmlDocGetRootElement(doc);
if (cur == NULL) {
xmlFreeDoc(doc);
SDL_Log("mavlink: Document is Empty!!!\n");
return;
}
cur = cur->xmlChildrenNode;
while (cur != NULL) {
if ((xmlStrcasecmp(cur->name, (const xmlChar *)"text"))) {
mavlink_parseParams(doc, cur);
}
cur = cur->next;
}
xmlFreeDoc(doc);
return;
}
示例10: xmlGetXPathString
int
xmlGetXPathString (const char *str,
const char * expr,
char * rc,
const int len)
{
xmlDocPtr doc;
xmlNodePtr cur;
xmlXPathContextPtr ctx;
xmlXPathObjectPtr path;
xmlChar *xmlRC;
doc = xmlParseMemory(str, strlen(str));
xmlXPathInit();
ctx = xmlXPathNewContext(doc);
path = xmlXPathEvalExpression((const xmlChar *)expr, ctx);
cur = path->nodesetval->nodeTab[0];
if (cur != NULL) {
xmlRC = xmlNodeListGetString(doc, cur->xmlChildrenNode, 1);
snprintf(rc, len, "%s\n", xmlRC);
xmlFree(xmlRC);
xmlFreeDoc(doc);
xmlCleanupParser();
xmlXPathFreeObject(path);
xmlXPathFreeContext(ctx);
return(0);
} else {
fprintf(stderr,"error in obtaining XPath %s\n", expr);
xmlFreeDoc(doc);
xmlCleanupParser();
xmlXPathFreeObject(path);
xmlXPathFreeContext(ctx);
rc[0] = 0x00;
return(1);
}
}
示例11: check_icu_iter3
static void check_icu_iter3(void)
{
UErrorCode status = U_ZERO_ERROR;
struct icu_chain *chain = 0;
xmlNode *xml_node;
const char *xml_str =
"<icu_chain id=\"sort\" locale=\"el\">\n"
"<transform rule=\"[:Control:] Any-Remove\"/>\n"
"<transform rule=\"[[:Control:][:WhiteSpace:][:Punctuation:]] Remove\"/>\n"
"<transform rule=\"NFD; [:Nonspacing Mark:] Remove; NFC\"/>\n"
"<casemap rule=\"l\"/>\n"
"<display/>\n"
"</icu_chain>\n";
xmlDoc *doc = xmlParseMemory(xml_str, strlen(xml_str));
YAZ_CHECK(doc);
if (!doc)
return;
xml_node = xmlDocGetRootElement(doc);
YAZ_CHECK(xml_node);
if (!xml_node)
return ;
chain = icu_chain_xml_config(xml_node, 1, &status);
xmlFreeDoc(doc);
YAZ_CHECK(chain);
if (!chain)
return;
YAZ_CHECK(test_iter(chain, "Adobe Acrobat Reader, 1991-1999.",
"[adobeacrobatreader19911999]"));
YAZ_CHECK(test_iter(chain, "Νόταρης, Γιάννης Σωτ",
"[νοταρηςγιαννηςσωτ]"));
icu_chain_destroy(chain);
}
示例12: xmlFreeDoc
char *XMLMetadata::initDoc(const char *raw, size_t len)
{
if (doc)
xmlFreeDoc(doc);
doc = xmlParseMemory(raw, len);
if (!doc) {
fprintf(stderr, "initDoc failed\n");
return NULL;
}
xmlNodePtr root = xmlDocGetRootElement(doc);
if(!root) { // MOS
fprintf(stderr, "initDoc failed - no root element\n");
// xmlFreeDoc(doc); // MOS - risk minor leak here
return NULL;
}
return (char *)root->name;
}
示例13: get_domain_xml
static xmlDocPtr
get_domain_xml (guestfs_h *g, virDomainPtr dom)
{
virErrorPtr err;
xmlDocPtr doc;
CLEANUP_FREE char *xml = virDomainGetXMLDesc (dom, 0);
if (!xml) {
err = virGetLastError ();
error (g, _("error reading libvirt XML information: %s"), err->message);
return NULL;
}
/* Parse the domain XML into an XML document. */
doc = xmlParseMemory (xml, strlen (xml));
if (doc == NULL) {
error (g, _("unable to parse XML information returned by libvirt"));
return NULL;
}
return doc;
}
示例14: makeXMLDoc
static xmlDocPtr makeXMLDoc (void)
{
const unsigned char* data;
size_t size;
xmlDocPtr doc = NULL;
doc = getInputFileUserData ();
if (doc)
{
verbose ("reuse xml doc data\n");
return doc;
}
data = getInpufFileData (&size);
if (data)
{
xmlLineNumbersDefault (1);
doc = xmlParseMemory((const char*)data, size);
}
return doc;
}
示例15: registerDTDEntityLoader
void TrackerConfig::loadConfigFile(const string& sFilename)
{
// TODO: There is duplicated code here and in Player::loadFile which belongs
// in a lower-level xml handling class.
registerDTDEntityLoader("trackerconfig.dtd", g_pTrackerConfigDTD);
xmlDtdPtr dtd;
string sDTDFName = "trackerconfig.dtd";
dtd = xmlParseDTD(NULL, (const xmlChar*) sDTDFName.c_str());
if (!dtd) {
AVG_LOG_WARNING("DTD not found at " << sDTDFName
<< ". Not validating trackerconfig files.");
}
// xmlParseFile crashes for some reason under Lion.
string sFileContents;
readWholeFile(sFilename, sFileContents);
m_Doc = xmlParseMemory(sFileContents.c_str(), sFileContents.length());
if (!m_Doc) {
AVG_LOG_ERROR("Could not open tracker config file " << sFilename <<
". Using defaults which will probably not work.");
return;
}
xmlValidCtxtPtr cvp = xmlNewValidCtxt();
cvp->error = xmlParserValidityError;
cvp->warning = xmlParserValidityWarning;
int isValid = xmlValidateDtd(cvp, m_Doc, dtd);
xmlFreeValidCtxt(cvp);
if (!isValid) {
throw (Exception(AVG_ERR_XML_PARSE, sFilename + " does not validate."));
}
m_pRoot = xmlDocGetRootElement(m_Doc);
xmlFreeDtd(dtd);
m_sFilename = sFilename;
AVG_TRACE(Logger::category::CONFIG, Logger::severity::INFO,
"Reading Tracker config file from " << sFilename);
}