Lines Matching refs:reader

61 #define DUMP_READER xmlTextReaderDebug(reader);
170 #define CONSTSTR(str) xmlDictLookup(reader->dict, (str), -1)
171 #define CONSTQSTR(p, str) xmlDictQLookup(reader->dict, (p), (str))
173 static int xmlTextReaderReadTree(xmlTextReaderPtr reader);
174 static int xmlTextReaderNextTree(xmlTextReaderPtr reader);
193 static void xmlTextReaderFreeNode(xmlTextReaderPtr reader, xmlNodePtr cur);
194 static void xmlTextReaderFreeNodeList(xmlTextReaderPtr reader, xmlNodePtr cur);
254 * @reader: the xmlTextReaderPtr used
260 xmlTextReaderFreeProp(xmlTextReaderPtr reader, xmlAttrPtr cur) {
263 dict = reader->ctxt->dict;
277 xmlTextReaderFreeNodeList(reader, cur->children);
280 if ((reader != NULL) && (reader->ctxt != NULL) &&
281 (reader->ctxt->freeAttrsNr < 100)) {
282 cur->next = reader->ctxt->freeAttrs;
283 reader->ctxt->freeAttrs = cur;
284 reader->ctxt->freeAttrsNr++;
292 * @reader: the xmlTextReaderPtr used
298 xmlTextReaderFreePropList(xmlTextReaderPtr reader, xmlAttrPtr cur) {
303 xmlTextReaderFreeProp(reader, cur);
310 * @reader: the xmlTextReaderPtr used
317 xmlTextReaderFreeNodeList(xmlTextReaderPtr reader, xmlNodePtr cur) {
321 dict = reader->ctxt->dict;
340 xmlTextReaderFreeNodeList(reader, cur->children);
351 xmlTextReaderFreePropList(reader, cur->properties);
373 (reader != NULL) && (reader->ctxt != NULL) &&
374 (reader->ctxt->freeElemsNr < 100)) {
375 cur->next = reader->ctxt->freeElems;
376 reader->ctxt->freeElems = cur;
377 reader->ctxt->freeElemsNr++;
388 * @reader: the xmlTextReaderPtr used
395 xmlTextReaderFreeNode(xmlTextReaderPtr reader, xmlNodePtr cur) {
398 dict = reader->ctxt->dict;
408 xmlTextReaderFreeProp(reader, (xmlAttrPtr) cur);
415 xmlTextReaderFreeNodeList(reader, cur->children);
426 xmlTextReaderFreePropList(reader, cur->properties);
449 (reader != NULL) && (reader->ctxt != NULL) &&
450 (reader->ctxt->freeElemsNr < 100)) {
451 cur->next = reader->ctxt->freeElems;
452 reader->ctxt->freeElems = cur;
453 reader->ctxt->freeElemsNr++;
472 * @reader: the xmlTextReaderPtr used
478 xmlTextReaderFreeDoc(xmlTextReaderPtr reader, xmlDocPtr cur) {
508 if (cur->children != NULL) xmlTextReaderFreeNodeList(reader, cur->children);
522 * The reader core parser *
527 xmlTextReaderDebug(xmlTextReaderPtr reader) {
528 if ((reader == NULL) || (reader->ctxt == NULL)) {
533 reader->state, reader->depth);
534 if (reader->node == NULL) {
537 fprintf(stderr, "node %s\n", reader->node->name);
540 reader->base, reader->cur, reader->ctxt->nodeNr);
541 if (reader->input->buffer == NULL) {
546 &reader->input->buffer->content[reader->cur]);
555 * @reader: the xmlTextReaderPtr used
563 xmlTextReaderEntPush(xmlTextReaderPtr reader, xmlNodePtr value)
565 if (reader->entMax <= 0) {
566 reader->entMax = 10;
567 reader->entTab = (xmlNodePtr *) xmlMalloc(reader->entMax *
568 sizeof(reader->entTab[0]));
569 if (reader->entTab == NULL) {
574 if (reader->entNr >= reader->entMax) {
575 reader->entMax *= 2;
576 reader->entTab =
577 (xmlNodePtr *) xmlRealloc(reader->entTab,
578 reader->entMax *
579 sizeof(reader->entTab[0]));
580 if (reader->entTab == NULL) {
585 reader->entTab[reader->entNr] = value;
586 reader->ent = value;
587 return (reader->entNr++);
592 * @reader: the xmlTextReaderPtr used
599 xmlTextReaderEntPop(xmlTextReaderPtr reader)
603 if (reader->entNr <= 0)
605 reader->entNr--;
606 if (reader->entNr > 0)
607 reader->ent = reader->entTab[reader->entNr - 1];
609 reader->ent = NULL;
610 ret = reader->entTab[reader->entNr];
611 reader->entTab[reader->entNr] = NULL;
627 xmlTextReaderPtr reader = ctxt->_private;
632 if ((reader != NULL) && (reader->startElement != NULL)) {
633 reader->startElement(ctx, fullname, atts);
639 if (reader != NULL)
640 reader->state = XML_TEXTREADER_ELEMENT;
653 xmlTextReaderPtr reader = ctxt->_private;
658 if ((reader != NULL) && (reader->endElement != NULL)) {
659 reader->endElement(ctx, fullname);
690 xmlTextReaderPtr reader = ctxt->_private;
695 if ((reader != NULL) && (reader->startElementNs != NULL)) {
696 reader->startElementNs(ctx, localname, prefix, URI, nb_namespaces,
704 if (reader != NULL)
705 reader->state = XML_TEXTREADER_ELEMENT;
724 xmlTextReaderPtr reader = ctxt->_private;
729 if ((reader != NULL) && (reader->endElementNs != NULL)) {
730 reader->endElementNs(ctx, localname, prefix, URI);
747 xmlTextReaderPtr reader = ctxt->_private;
752 if ((reader != NULL) && (reader->characters != NULL)) {
753 reader->characters(ctx, ch, len);
769 xmlTextReaderPtr reader = ctxt->_private;
774 if ((reader != NULL) && (reader->cdataBlock != NULL)) {
775 reader->cdataBlock(ctx, ch, len);
781 * @reader: the xmlTextReaderPtr used
789 xmlTextReaderPushData(xmlTextReaderPtr reader) {
794 if ((reader->input == NULL) || (reader->input->buffer == NULL))
797 oldstate = reader->state;
798 reader->state = XML_TEXTREADER_NONE;
799 inbuf = reader->input->buffer;
801 while (reader->state == XML_TEXTREADER_NONE) {
802 if (inbuf->use < reader->cur + CHUNK_SIZE) {
806 if (reader->mode != XML_TEXTREADER_MODE_EOF) {
807 val = xmlParserInputBufferRead(reader->input, 4096);
810 if (inbuf->use == reader->cur) {
811 reader->mode = XML_TEXTREADER_MODE_EOF;
812 reader->state = oldstate;
815 reader->mode = XML_TEXTREADER_MODE_EOF;
816 reader->state = oldstate;
818 (reader->ctxt->myDoc != NULL))
822 reader->mode = XML_TEXTREADER_MODE_EOF;
833 if (inbuf->use >= reader->cur + CHUNK_SIZE) {
834 val = xmlParseChunk(reader->ctxt,
835 (const char *) &inbuf->content[reader->cur],
837 reader->cur += CHUNK_SIZE;
838 if ((val != 0) || (reader->ctxt->wellFormed == 0))
841 s = inbuf->use - reader->cur;
842 val = xmlParseChunk(reader->ctxt,
843 (const char *) &inbuf->content[reader->cur],
845 reader->cur += s;
846 if ((val != 0) || (reader->ctxt->wellFormed == 0))
855 if (reader->mode == XML_TEXTREADER_MODE_INTERACTIVE) {
857 if ((reader->cur >= 4096) &&
858 (inbuf->use - reader->cur <= CHUNK_SIZE)) {
859 val = xmlBufferShrink(inbuf, reader->cur);
861 reader->cur -= val;
871 else if (reader->mode == XML_TEXTREADER_MODE_EOF) {
872 if (reader->mode != XML_TEXTREADER_DONE) {
873 s = inbuf->use - reader->cur;
874 val = xmlParseChunk(reader->ctxt,
875 (const char *) &inbuf->content[reader->cur],
877 reader->cur = inbuf->use;
878 reader->mode = XML_TEXTREADER_DONE;
879 if ((val != 0) || (reader->ctxt->wellFormed == 0))
883 reader->state = oldstate;
890 * @reader: the xmlTextReaderPtr used
895 xmlTextReaderValidatePush(xmlTextReaderPtr reader ATTRIBUTE_UNUSED) {
896 xmlNodePtr node = reader->node;
899 if ((reader->validate == XML_TEXTREADER_VALIDATE_DTD) &&
900 (reader->ctxt != NULL) && (reader->ctxt->validate == 1)) {
902 reader->ctxt->valid &= xmlValidatePushElement(&reader->ctxt->vctxt,
903 reader->ctxt->myDoc, node, node->name);
911 reader->ctxt->valid &= xmlValidatePushElement(&reader->ctxt->vctxt,
912 reader->ctxt->myDoc, node, qname);
919 if ((reader->validate == XML_TEXTREADER_VALIDATE_RNG) &&
920 (reader->rngValidCtxt != NULL)) {
923 if (reader->rngFullNode != NULL) return;
924 ret = xmlRelaxNGValidatePushElement(reader->rngValidCtxt,
925 reader->ctxt->myDoc,
931 node = xmlTextReaderExpand(reader);
936 ret = xmlRelaxNGValidateFullElement(reader->rngValidCtxt,
937 reader->ctxt->myDoc,
939 reader->rngFullNode = node;
943 reader->rngValidErrors++;
950 * @reader: the xmlTextReaderPtr used
957 xmlTextReaderValidateCData(xmlTextReaderPtr reader,
960 if ((reader->validate == XML_TEXTREADER_VALIDATE_DTD) &&
961 (reader->ctxt != NULL) && (reader->ctxt->validate == 1)) {
962 reader->ctxt->valid &= xmlValidatePushCData(&reader->ctxt->vctxt,
967 if ((reader->validate == XML_TEXTREADER_VALIDATE_RNG) &&
968 (reader->rngValidCtxt != NULL)) {
971 if (reader->rngFullNode != NULL) return;
972 ret = xmlRelaxNGValidatePushCData(reader->rngValidCtxt, data, len);
974 reader->rngValidErrors++;
981 * @reader: the xmlTextReaderPtr used
986 xmlTextReaderValidatePop(xmlTextReaderPtr reader) {
987 xmlNodePtr node = reader->node;
990 if ((reader->validate == XML_TEXTREADER_VALIDATE_DTD) &&
991 (reader->ctxt != NULL) && (reader->ctxt->validate == 1)) {
993 reader->ctxt->valid &= xmlValidatePopElement(&reader->ctxt->vctxt,
994 reader->ctxt->myDoc, node, node->name);
1002 reader->ctxt->valid &= xmlValidatePopElement(&reader->ctxt->vctxt,
1003 reader->ctxt->myDoc, node, qname);
1010 if ((reader->validate == XML_TEXTREADER_VALIDATE_RNG) &&
1011 (reader->rngValidCtxt != NULL)) {
1014 if (reader->rngFullNode != NULL) {
1015 if (node == reader->rngFullNode)
1016 reader->rngFullNode = NULL;
1019 ret = xmlRelaxNGValidatePopElement(reader->rngValidCtxt,
1020 reader->ctxt->myDoc,
1023 reader->rngValidErrors++;
1030 * @reader: the xmlTextReaderPtr used
1037 xmlTextReaderValidateEntity(xmlTextReaderPtr reader) {
1038 xmlNodePtr oldnode = reader->node;
1039 xmlNodePtr node = reader->node;
1040 xmlParserCtxtPtr ctxt = reader->ctxt;
1057 xmlTextReaderEntPush(reader, node);
1070 reader->node = node;
1071 xmlTextReaderValidatePush(reader);
1074 xmlTextReaderValidateCData(reader, node->content,
1086 xmlTextReaderValidatePop(reader);
1096 if (reader->entNr == 0) {
1100 xmlTextReaderFreeNode(reader, tmp);
1105 reader->node = node;
1106 xmlTextReaderValidatePop(reader);
1109 (reader->ent != NULL) && (reader->ent->children == node)) {
1110 node = xmlTextReaderEntPop(reader);
1120 reader->node = oldnode;
1147 * @reader: the xmlTextReaderPtr used
1157 xmlTextReaderDoExpand(xmlTextReaderPtr reader) {
1160 if ((reader == NULL) || (reader->node == NULL) || (reader->ctxt == NULL))
1163 if (reader->ctxt->instate == XML_PARSER_EOF) return(1);
1165 if (xmlTextReaderGetSuccessor(reader->node) != NULL)
1167 if (reader->ctxt->nodeNr < reader->depth)
1169 if (reader->mode == XML_TEXTREADER_MODE_EOF)
1171 val = xmlTextReaderPushData(reader);
1174 } while(reader->mode != XML_TEXTREADER_MODE_EOF);
1224 * @reader: the xmlTextReaderPtr used
1233 xmlTextReaderRead(xmlTextReaderPtr reader) {
1239 if (reader == NULL)
1241 reader->curnode = NULL;
1242 if (reader->doc != NULL)
1243 return(xmlTextReaderReadTree(reader));
1244 if (reader->ctxt == NULL)
1246 if (reader->ctxt->wellFormed != 1)
1253 if (reader->mode == XML_TEXTREADER_MODE_INITIAL) {
1254 reader->mode = XML_TEXTREADER_MODE_INTERACTIVE;
1259 val = xmlTextReaderPushData(reader);
1262 } while ((reader->ctxt->node == NULL) &&
1263 ((reader->mode != XML_TEXTREADER_MODE_EOF) &&
1264 (reader->mode != XML_TEXTREADER_DONE)));
1265 if (reader->ctxt->node == NULL) {
1266 if (reader->ctxt->myDoc != NULL) {
1267 reader->node = reader->ctxt->myDoc->children;
1269 if (reader->node == NULL)
1271 reader->state = XML_TEXTREADER_ELEMENT;
1273 if (reader->ctxt->myDoc != NULL) {
1274 reader->node = reader->ctxt->myDoc->children;
1276 if (reader->node == NULL)
1277 reader->node = reader->ctxt->nodeTab[0];
1278 reader->state = XML_TEXTREADER_ELEMENT;
1280 reader->depth = 0;
1281 reader->ctxt->parseMode = XML_PARSE_READER;
1284 oldstate = reader->state;
1285 olddepth = reader->ctxt->nodeNr;
1286 oldnode = reader->node;
1289 if (reader->node == NULL) {
1290 if (reader->mode == XML_TEXTREADER_DONE)
1301 while ((reader->node != NULL) && (reader->node->next == NULL) &&
1302 (reader->ctxt->nodeNr == olddepth) &&
1304 (reader->node->children == NULL) ||
1305 (reader->node->type == XML_ENTITY_REF_NODE) ||
1306 ((reader->node->children != NULL) &&
1307 (reader->node->children->type == XML_TEXT_NODE) &&
1308 (reader->node->children->next == NULL)) ||
1309 (reader->node->type == XML_DTD_NODE) ||
1310 (reader->node->type == XML_DOCUMENT_NODE) ||
1311 (reader->node->type == XML_HTML_DOCUMENT_NODE)) &&
1312 ((reader->ctxt->node == NULL) ||
1313 (reader->ctxt->node == reader->node) ||
1314 (reader->ctxt->node == reader->node->parent)) &&
1315 (reader->ctxt->instate != XML_PARSER_EOF)) {
1316 val = xmlTextReaderPushData(reader);
1319 if (reader->node == NULL)
1323 if ((reader->node->children != NULL) &&
1324 (reader->node->type != XML_ENTITY_REF_NODE) &&
1325 (reader->node->type != XML_XINCLUDE_START) &&
1326 (reader->node->type != XML_DTD_NODE)) {
1327 reader->node = reader->node->children;
1328 reader->depth++;
1329 reader->state = XML_TEXTREADER_ELEMENT;
1333 if (reader->node->next != NULL) {
1335 (reader->node->type == XML_ELEMENT_NODE) &&
1336 (reader->node->children == NULL) &&
1337 ((reader->node->extra & NODE_IS_EMPTY) == 0)
1339 && (reader->in_xinclude <= 0)
1342 reader->state = XML_TEXTREADER_END;
1346 if ((reader->validate) &&
1347 (reader->node->type == XML_ELEMENT_NODE))
1348 xmlTextReaderValidatePop(reader);
1350 if ((reader->preserves > 0) &&
1351 (reader->node->extra & NODE_IS_SPRESERVED))
1352 reader->preserves--;
1353 reader->node = reader->node->next;
1354 reader->state = XML_TEXTREADER_ELEMENT;
1359 if ((reader->preserves == 0) &&
1361 (reader->in_xinclude == 0) &&
1363 (reader->entNr == 0) &&
1364 (reader->node->prev != NULL) &&
1365 (reader->node->prev->type != XML_DTD_NODE) &&
1366 (reader->entNr == 0)) {
1367 xmlNodePtr tmp = reader->node->prev;
1370 xmlTextReaderFreeNode(reader, tmp);
1377 (reader->node->type == XML_ELEMENT_NODE) &&
1378 (reader->node->children == NULL) &&
1379 ((reader->node->extra & NODE_IS_EMPTY) == 0)) {;
1380 reader->state = XML_TEXTREADER_END;
1384 if ((reader->validate) && (reader->node->type == XML_ELEMENT_NODE))
1385 xmlTextReaderValidatePop(reader);
1387 if ((reader->preserves > 0) &&
1388 (reader->node->extra & NODE_IS_SPRESERVED))
1389 reader->preserves--;
1390 reader->node = reader->node->parent;
1391 if ((reader->node == NULL) ||
1392 (reader->node->type == XML_DOCUMENT_NODE) ||
1394 (reader->node->type == XML_DOCB_DOCUMENT_NODE) ||
1396 (reader->node->type == XML_HTML_DOCUMENT_NODE)) {
1397 if (reader->mode != XML_TEXTREADER_DONE) {
1398 val = xmlParseChunk(reader->ctxt, "", 0, 1);
1399 reader->mode = XML_TEXTREADER_DONE;
1403 reader->node = NULL;
1404 reader->depth = -1;
1409 if ((reader->preserves == 0) &&
1411 (reader->in_xinclude == 0) &&
1413 (reader->entNr == 0) &&
1416 (reader->entNr == 0)) {
1418 xmlTextReaderFreeNode(reader, oldnode);
1423 if ((reader->preserves == 0) &&
1425 (reader->in_xinclude == 0) &&
1427 (reader->entNr == 0) &&
1428 (reader->node->last != NULL) &&
1429 ((reader->node->last->extra & NODE_IS_PRESERVED) == 0)) {
1430 xmlNodePtr tmp = reader->node->last;
1432 xmlTextReaderFreeNode(reader, tmp);
1434 reader->depth--;
1435 reader->state = XML_TEXTREADER_BACKTRACK;
1443 if ((reader->node != NULL) &&
1444 (reader->node->next == NULL) &&
1445 ((reader->node->type == XML_TEXT_NODE) ||
1446 (reader->node->type == XML_CDATA_SECTION_NODE))) {
1447 if (xmlTextReaderExpand(reader) == NULL)
1455 if ((reader->xinclude) && (reader->node != NULL) &&
1456 (reader->node->type == XML_ELEMENT_NODE) &&
1457 (reader->node->ns != NULL) &&
1458 ((xmlStrEqual(reader->node->ns->href, XINCLUDE_NS)) ||
1459 (xmlStrEqual(reader->node->ns->href, XINCLUDE_OLD_NS)))) {
1460 if (reader->xincctxt == NULL) {
1461 reader->xincctxt = xmlXIncludeNewContext(reader->ctxt->myDoc);
1462 xmlXIncludeSetFlags(reader->xincctxt,
1463 reader->parserFlags & (~XML_PARSE_NOXINCNODE));
1468 if (xmlTextReaderExpand(reader) == NULL)
1470 xmlXIncludeProcessNode(reader->xincctxt, reader->node);
1472 if ((reader->node != NULL) && (reader->node->type == XML_XINCLUDE_START)) {
1473 reader->in_xinclude++;
1476 if ((reader->node != NULL) && (reader->node->type == XML_XINCLUDE_END)) {
1477 reader->in_xinclude--;
1484 if ((reader->node != NULL) &&
1485 (reader->node->type == XML_ENTITY_REF_NODE) &&
1486 (reader->ctxt != NULL) && (reader->ctxt->replaceEntities == 1)) {
1491 if ((reader->node->children == NULL) && (reader->ctxt->sax != NULL) &&
1492 (reader->ctxt->sax->getEntity != NULL)) {
1493 reader->node->children = (xmlNodePtr)
1494 reader->ctxt->sax->getEntity(reader->ctxt, reader->node->name);
1497 if ((reader->node->children != NULL) &&
1498 (reader->node->children->type == XML_ENTITY_DECL) &&
1499 (reader->node->children->children != NULL)) {
1500 xmlTextReaderEntPush(reader, reader->node);
1501 reader->node = reader->node->children->children;
1504 } else if ((reader->node != NULL) &&
1505 (reader->node->type == XML_ENTITY_REF_NODE) &&
1506 (reader->ctxt != NULL) && (reader->validate)) {
1507 xmlTextReaderValidateEntity(reader);
1510 if ((reader->node != NULL) &&
1511 (reader->node->type == XML_ENTITY_DECL) &&
1512 (reader->ent != NULL) && (reader->ent->children == reader->node)) {
1513 reader->node = xmlTextReaderEntPop(reader);
1514 reader->depth++;
1518 if ((reader->validate) && (reader->node != NULL)) {
1519 xmlNodePtr node = reader->node;
1522 ((reader->state != XML_TEXTREADER_END) &&
1523 (reader->state != XML_TEXTREADER_BACKTRACK))) {
1524 xmlTextReaderValidatePush(reader);
1527 xmlTextReaderValidateCData(reader, node->content,
1533 if ((reader->patternNr > 0) && (reader->state != XML_TEXTREADER_END) &&
1534 (reader->state != XML_TEXTREADER_BACKTRACK)) {
1536 for (i = 0;i < reader->patternNr;i++) {
1537 if (xmlPatternMatch(reader->patternTab[i], reader->node) == 1) {
1538 xmlTextReaderPreserve(reader);
1545 if ((reader->validate == XML_TEXTREADER_VALIDATE_XSD) &&
1546 (reader->xsdValidErrors == 0) &&
1547 (reader->xsdValidCtxt != NULL)) {
1548 reader->xsdValidErrors = !xmlSchemaIsValid(reader->xsdValidCtxt);
1553 reader->mode = XML_TEXTREADER_DONE;
1559 * @reader: the xmlTextReaderPtr used
1561 * Gets the read state of the reader.
1566 xmlTextReaderReadState(xmlTextReaderPtr reader) {
1567 if (reader == NULL)
1569 return(reader->mode);
1574 * @reader: the xmlTextReaderPtr used
1583 xmlTextReaderExpand(xmlTextReaderPtr reader) {
1584 if ((reader == NULL) || (reader->node == NULL))
1586 if (reader->doc != NULL)
1587 return(reader->node);
1588 if (reader->ctxt == NULL)
1590 if (xmlTextReaderDoExpand(reader) < 0)
1592 return(reader->node);
1597 * @reader: the xmlTextReaderPtr used
1606 xmlTextReaderNext(xmlTextReaderPtr reader) {
1610 if (reader == NULL)
1612 if (reader->doc != NULL)
1613 return(xmlTextReaderNextTree(reader));
1614 cur = reader->node;
1616 return(xmlTextReaderRead(reader));
1617 if (reader->state == XML_TEXTREADER_END || reader->state == XML_TEXTREADER_BACKTRACK)
1618 return(xmlTextReaderRead(reader));
1620 return(xmlTextReaderRead(reader));
1622 ret = xmlTextReaderRead(reader);
1625 } while (reader->node != cur);
1626 return(xmlTextReaderRead(reader));
1632 * @reader: the xmlTextReaderPtr used
1641 xmlTextReaderReadInnerXml(xmlTextReaderPtr reader ATTRIBUTE_UNUSED)
1648 if (xmlTextReaderExpand(reader) == NULL) {
1651 doc = reader->doc;
1653 for (cur_node = reader->node->children; cur_node != NULL;
1678 * @reader: the xmlTextReaderPtr used
1687 xmlTextReaderReadOuterXml(xmlTextReaderPtr reader ATTRIBUTE_UNUSED)
1694 node = reader->node;
1695 doc = reader->doc;
1696 if (xmlTextReaderExpand(reader) == NULL) {
1718 * @reader: the xmlTextReaderPtr used
1723 * or NULL if the reader is positioned on any other type of node.
1727 xmlTextReaderReadString(xmlTextReaderPtr reader)
1731 if ((reader == NULL) || (reader->node == NULL))
1734 node = (reader->curnode != NULL) ? reader->curnode : reader->node;
1741 if (xmlTextReaderDoExpand(reader) != -1) {
1756 * @reader: the xmlTextReaderPtr used
1769 xmlTextReaderReadBase64(xmlTextReaderPtr reader,
1773 if ((reader == NULL) || (reader->ctxt == NULL))
1775 if (reader->ctxt->wellFormed != 1)
1778 if ((reader->node == NULL) || (reader->node->type == XML_ELEMENT_NODE))
1786 * @reader: the xmlTextReaderPtr used
1799 xmlTextReaderReadBinHex(xmlTextReaderPtr reader,
1803 if ((reader == NULL) || (reader->ctxt == NULL))
1805 if (reader->ctxt->wellFormed != 1)
1808 if ((reader->node == NULL) || (reader->node->type == XML_ELEMENT_NODE))
1821 xmlTextReaderNextTree(xmlTextReaderPtr reader)
1823 if (reader == NULL)
1826 if (reader->state == XML_TEXTREADER_END)
1829 if (reader->node == NULL) {
1830 if (reader->doc->children == NULL) {
1831 reader->state = XML_TEXTREADER_END;
1835 reader->node = reader->doc->children;
1836 reader->state = XML_TEXTREADER_START;
1840 if (reader->state != XML_TEXTREADER_BACKTRACK) {
1841 if (reader->node->children != 0) {
1842 reader->node = reader->node->children;
1843 reader->depth++;
1844 reader->state = XML_TEXTREADER_START;
1848 if ((reader->node->type == XML_ELEMENT_NODE) ||
1849 (reader->node->type == XML_ATTRIBUTE_NODE)) {
1850 reader->state = XML_TEXTREADER_BACKTRACK;
1855 if (reader->node->next != 0) {
1856 reader->node = reader->node->next;
1857 reader->state = XML_TEXTREADER_START;
1861 if (reader->node->parent != 0) {
1862 if (reader->node->parent->type == XML_DOCUMENT_NODE) {
1863 reader->state = XML_TEXTREADER_END;
1867 reader->node = reader->node->parent;
1868 reader->depth--;
1869 reader->state = XML_TEXTREADER_BACKTRACK;
1873 reader->state = XML_TEXTREADER_END;
1880 * @reader: the xmlTextReaderPtr used
1889 xmlTextReaderReadTree(xmlTextReaderPtr reader) {
1890 if (reader->state == XML_TEXTREADER_END)
1894 if (reader->node == NULL) {
1895 if (reader->doc->children == NULL) {
1896 reader->state = XML_TEXTREADER_END;
1900 reader->node = reader->doc->children;
1901 reader->state = XML_TEXTREADER_START;
1905 if ((reader->state != XML_TEXTREADER_BACKTRACK) &&
1906 (reader->node->type != XML_DTD_NODE) &&
1907 (reader->node->type != XML_XINCLUDE_START) &&
1908 (reader->node->type != XML_ENTITY_REF_NODE)) {
1909 if (reader->node->children != NULL) {
1910 reader->node = reader->node->children;
1911 reader->depth++;
1912 reader->state = XML_TEXTREADER_START;
1916 if (reader->node->type == XML_ATTRIBUTE_NODE) {
1917 reader->state = XML_TEXTREADER_BACKTRACK;
1922 if (reader->node->next != NULL) {
1923 reader->node = reader->node->next;
1924 reader->state = XML_TEXTREADER_START;
1928 if (reader->node->parent != NULL) {
1929 if ((reader->node->parent->type == XML_DOCUMENT_NODE) ||
1930 (reader->node->parent->type == XML_HTML_DOCUMENT_NODE)) {
1931 reader->state = XML_TEXTREADER_END;
1935 reader->node = reader->node->parent;
1936 reader->depth--;
1937 reader->state = XML_TEXTREADER_BACKTRACK;
1941 reader->state = XML_TEXTREADER_END;
1944 if ((reader->node->type == XML_XINCLUDE_START) ||
1945 (reader->node->type == XML_XINCLUDE_END))
1953 * @reader: the xmlTextReaderPtr used
1963 xmlTextReaderNextSibling(xmlTextReaderPtr reader) {
1964 if (reader == NULL)
1966 if (reader->doc == NULL) {
1971 if (reader->state == XML_TEXTREADER_END)
1974 if (reader->node == NULL)
1975 return(xmlTextReaderNextTree(reader));
1977 if (reader->node->next != NULL) {
1978 reader->node = reader->node->next;
1979 reader->state = XML_TEXTREADER_START;
2136 * @reader: the xmlTextReaderPtr
2138 * Deallocate all the resources associated to the reader
2141 xmlFreeTextReader(xmlTextReaderPtr reader) {
2142 if (reader == NULL)
2145 if (reader->rngSchemas != NULL) {
2146 xmlRelaxNGFree(reader->rngSchemas);
2147 reader->rngSchemas = NULL;
2149 if (reader->rngValidCtxt != NULL) {
2150 xmlRelaxNGFreeValidCtxt(reader->rngValidCtxt);
2151 reader->rngValidCtxt = NULL;
2153 if (reader->xsdPlug != NULL) {
2154 xmlSchemaSAXUnplug(reader->xsdPlug);
2155 reader->xsdPlug = NULL;
2157 if (reader->xsdValidCtxt != NULL) {
2158 if (! reader->xsdPreserveCtxt)
2159 xmlSchemaFreeValidCtxt(reader->xsdValidCtxt);
2160 reader->xsdValidCtxt = NULL;
2162 if (reader->xsdSchemas != NULL) {
2163 xmlSchemaFree(reader->xsdSchemas);
2164 reader->xsdSchemas = NULL;
2168 if (reader->xincctxt != NULL)
2169 xmlXIncludeFreeContext(reader->xincctxt);
2172 if (reader->patternTab != NULL) {
2174 for (i = 0;i < reader->patternNr;i++) {
2175 if (reader->patternTab[i] != NULL)
2176 xmlFreePattern(reader->patternTab[i]);
2178 xmlFree(reader->patternTab);
2181 if (reader->ctxt != NULL) {
2182 if (reader->dict == reader->ctxt->dict)
2183 reader->dict = NULL;
2184 if (reader->ctxt->myDoc != NULL) {
2185 if (reader->preserve == 0)
2186 xmlTextReaderFreeDoc(reader, reader->ctxt->myDoc);
2187 reader->ctxt->myDoc = NULL;
2189 if ((reader->ctxt->vctxt.vstateTab != NULL) &&
2190 (reader->ctxt->vctxt.vstateMax > 0)){
2191 xmlFree(reader->ctxt->vctxt.vstateTab);
2192 reader->ctxt->vctxt.vstateTab = NULL;
2193 reader->ctxt->vctxt.vstateMax = 0;
2195 if (reader->allocs & XML_TEXTREADER_CTXT)
2196 xmlFreeParserCtxt(reader->ctxt);
2198 if (reader->sax != NULL)
2199 xmlFree(reader->sax);
2200 if ((reader->input != NULL) && (reader->allocs & XML_TEXTREADER_INPUT))
2201 xmlFreeParserInputBuffer(reader->input);
2202 if (reader->faketext != NULL) {
2203 xmlFreeNode(reader->faketext);
2205 if (reader->buffer != NULL)
2206 xmlBufferFree(reader->buffer);
2207 if (reader->entTab != NULL)
2208 xmlFree(reader->entTab);
2209 if (reader->dict != NULL)
2210 xmlDictFree(reader->dict);
2211 xmlFree(reader);
2221 * @reader: the xmlTextReaderPtr used
2229 xmlTextReaderClose(xmlTextReaderPtr reader) {
2230 if (reader == NULL)
2232 reader->node = NULL;
2233 reader->curnode = NULL;
2234 reader->mode = XML_TEXTREADER_MODE_CLOSED;
2235 if (reader->ctxt != NULL) {
2236 xmlStopParser(reader->ctxt);
2237 if (reader->ctxt->myDoc != NULL) {
2238 if (reader->preserve == 0)
2239 xmlTextReaderFreeDoc(reader, reader->ctxt->myDoc);
2240 reader->ctxt->myDoc = NULL;
2243 if ((reader->input != NULL) && (reader->allocs & XML_TEXTREADER_INPUT)) {
2244 xmlFreeParserInputBuffer(reader->input);
2245 reader->allocs -= XML_TEXTREADER_INPUT;
2252 * @reader: the xmlTextReaderPtr used
2262 xmlTextReaderGetAttributeNo(xmlTextReaderPtr reader, int no) {
2268 if (reader == NULL)
2270 if (reader->node == NULL)
2272 if (reader->curnode != NULL)
2275 if (reader->node->type != XML_ELEMENT_NODE)
2278 ns = reader->node->nsDef;
2285 cur = reader->node->properties;
2295 ret = xmlNodeListGetString(reader->node->doc, cur->children, 1);
2302 * @reader: the xmlTextReaderPtr used
2311 xmlTextReaderGetAttribute(xmlTextReaderPtr reader, const xmlChar *name) {
2317 if ((reader == NULL) || (name == NULL))
2319 if (reader->node == NULL)
2321 if (reader->curnode != NULL)
2325 if (reader->node->type != XML_ELEMENT_NODE)
2334 ns = reader->node->nsDef;
2343 return(xmlGetNoNsProp(reader->node, name));
2350 ns = reader->node->nsDef;
2359 ns = xmlSearchNs(reader->node->doc, reader->node, prefix);
2361 ret = xmlGetNsProp(reader->node, localname, ns->href);
2373 * @reader: the xmlTextReaderPtr used
2383 xmlTextReaderGetAttributeNs(xmlTextReaderPtr reader, const xmlChar *localName,
2388 if ((reader == NULL) || (localName == NULL))
2390 if (reader->node == NULL)
2392 if (reader->curnode != NULL)
2396 if (reader->node->type != XML_ELEMENT_NODE)
2403 ns = reader->node->nsDef;
2414 return(xmlGetNsProp(reader->node, localName, namespaceURI));
2419 * @reader: the xmlTextReaderPtr used
2426 * what's left in reader->input, and there is an allocation problem. Best
2433 xmlTextReaderGetRemainder(xmlTextReaderPtr reader) {
2436 if (reader == NULL)
2438 if (reader->node == NULL)
2441 reader->node = NULL;
2442 reader->curnode = NULL;
2443 reader->mode = XML_TEXTREADER_MODE_EOF;
2444 if (reader->ctxt != NULL) {
2445 xmlStopParser(reader->ctxt);
2446 if (reader->ctxt->myDoc != NULL) {
2447 if (reader->preserve == 0)
2448 xmlTextReaderFreeDoc(reader, reader->ctxt->myDoc);
2449 reader->ctxt->myDoc = NULL;
2452 if (reader->allocs & XML_TEXTREADER_INPUT) {
2453 ret = reader->input;
2454 reader->input = NULL;
2455 reader->allocs -= XML_TEXTREADER_INPUT;
2471 * @reader: the xmlTextReaderPtr used
2481 xmlTextReaderLookupNamespace(xmlTextReaderPtr reader, const xmlChar *prefix) {
2484 if (reader == NULL)
2486 if (reader->node == NULL)
2489 ns = xmlSearchNs(reader->node->doc, reader->node, prefix);
2497 * @reader: the xmlTextReaderPtr used
2507 xmlTextReaderMoveToAttributeNo(xmlTextReaderPtr reader, int no) {
2512 if (reader == NULL)
2514 if (reader->node == NULL)
2517 if (reader->node->type != XML_ELEMENT_NODE)
2520 reader->curnode = NULL;
2522 ns = reader->node->nsDef;
2527 reader->curnode = (xmlNodePtr) ns;
2531 cur = reader->node->properties;
2541 reader->curnode = (xmlNodePtr) cur;
2547 * @reader: the xmlTextReaderPtr used
2556 xmlTextReaderMoveToAttribute(xmlTextReaderPtr reader, const xmlChar *name) {
2562 if ((reader == NULL) || (name == NULL))
2564 if (reader->node == NULL)
2568 if (reader->node->type != XML_ELEMENT_NODE)
2577 ns = reader->node->nsDef;
2580 reader->curnode = (xmlNodePtr) ns;
2588 prop = reader->node->properties;
2597 reader->curnode = (xmlNodePtr) prop;
2609 ns = reader->node->nsDef;
2612 reader->curnode = (xmlNodePtr) ns;
2619 prop = reader->node->properties;
2628 reader->curnode = (xmlNodePtr) prop;
2650 * @reader: the xmlTextReaderPtr used
2660 xmlTextReaderMoveToAttributeNs(xmlTextReaderPtr reader,
2667 if ((reader == NULL) || (localName == NULL) || (namespaceURI == NULL))
2669 if (reader->node == NULL)
2671 if (reader->node->type != XML_ELEMENT_NODE)
2673 node = reader->node;
2679 ns = reader->node->nsDef;
2683 reader->curnode = (xmlNodePtr) ns;
2701 reader->curnode = (xmlNodePtr) prop;
2711 * @reader: the xmlTextReaderPtr used
2719 xmlTextReaderMoveToFirstAttribute(xmlTextReaderPtr reader) {
2720 if (reader == NULL)
2722 if (reader->node == NULL)
2724 if (reader->node->type != XML_ELEMENT_NODE)
2727 if (reader->node->nsDef != NULL) {
2728 reader->curnode = (xmlNodePtr) reader->node->nsDef;
2731 if (reader->node->properties != NULL) {
2732 reader->curnode = (xmlNodePtr) reader->node->properties;
2740 * @reader: the xmlTextReaderPtr used
2748 xmlTextReaderMoveToNextAttribute(xmlTextReaderPtr reader) {
2749 if (reader == NULL)
2751 if (reader->node == NULL)
2753 if (reader->node->type != XML_ELEMENT_NODE)
2755 if (reader->curnode == NULL)
2756 return(xmlTextReaderMoveToFirstAttribute(reader));
2758 if (reader->curnode->type == XML_NAMESPACE_DECL) {
2759 xmlNsPtr ns = (xmlNsPtr) reader->curnode;
2761 reader->curnode = (xmlNodePtr) ns->next;
2764 if (reader->node->properties != NULL) {
2765 reader->curnode = (xmlNodePtr) reader->node->properties;
2769 } else if ((reader->curnode->type == XML_ATTRIBUTE_NODE) &&
2770 (reader->curnode->next != NULL)) {
2771 reader->curnode = reader->curnode->next;
2779 * @reader: the xmlTextReaderPtr used
2787 xmlTextReaderMoveToElement(xmlTextReaderPtr reader) {
2788 if (reader == NULL)
2790 if (reader->node == NULL)
2792 if (reader->node->type != XML_ELEMENT_NODE)
2794 if (reader->curnode != NULL) {
2795 reader->curnode = NULL;
2803 * @reader: the xmlTextReaderPtr used
2807 * Returns 1 in case of success, 0 if the reader was not positionned on an
2812 xmlTextReaderReadAttributeValue(xmlTextReaderPtr reader) {
2813 if (reader == NULL)
2815 if (reader->node == NULL)
2817 if (reader->curnode == NULL)
2819 if (reader->curnode->type == XML_ATTRIBUTE_NODE) {
2820 if (reader->curnode->children == NULL)
2822 reader->curnode = reader->curnode->children;
2823 } else if (reader->curnode->type == XML_NAMESPACE_DECL) {
2824 xmlNsPtr ns = (xmlNsPtr) reader->curnode;
2826 if (reader->faketext == NULL) {
2827 reader->faketext = xmlNewDocText(reader->node->doc,
2830 if ((reader->faketext->content != NULL) &&
2831 (reader->faketext->content !=
2832 (xmlChar *) &(reader->faketext->properties)))
2833 xmlFree(reader->faketext->content);
2834 reader->faketext->content = xmlStrdup(ns->href);
2836 reader->curnode = reader->faketext;
2838 if (reader->curnode->next == NULL)
2840 reader->curnode = reader->curnode->next;
2847 * @reader: the xmlTextReaderPtr used
2852 * case of error. The string is deallocated with the reader.
2855 xmlTextReaderConstEncoding(xmlTextReaderPtr reader) {
2857 if (reader == NULL)
2859 if (reader->doc != NULL)
2860 doc = reader->doc;
2861 else if (reader->ctxt != NULL)
2862 doc = reader->ctxt->myDoc;
2880 * @reader: the xmlTextReaderPtr used
2887 xmlTextReaderAttributeCount(xmlTextReaderPtr reader) {
2893 if (reader == NULL)
2895 if (reader->node == NULL)
2898 if (reader->curnode != NULL)
2899 node = reader->curnode;
2901 node = reader->node;
2905 if ((reader->state == XML_TEXTREADER_END) ||
2906 (reader->state == XML_TEXTREADER_BACKTRACK))
2924 * @reader: the xmlTextReaderPtr used
2933 xmlTextReaderNodeType(xmlTextReaderPtr reader) {
2936 if (reader == NULL)
2938 if (reader->node == NULL)
2940 if (reader->curnode != NULL)
2941 node = reader->curnode;
2943 node = reader->node;
2946 if ((reader->state == XML_TEXTREADER_END) ||
2947 (reader->state == XML_TEXTREADER_BACKTRACK))
2954 if (xmlIsBlankNode(reader->node)) {
2955 if (xmlNodeGetSpacePreserve(reader->node))
2998 * @reader: the xmlTextReaderPtr used
3005 xmlTextReaderIsEmptyElement(xmlTextReaderPtr reader) {
3006 if ((reader == NULL) || (reader->node == NULL))
3008 if (reader->node->type != XML_ELEMENT_NODE)
3010 if (reader->curnode != NULL)
3012 if (reader->node->children != NULL)
3014 if (reader->state == XML_TEXTREADER_END)
3016 if (reader->doc != NULL)
3019 if (reader->in_xinclude > 0)
3022 return((reader->node->extra & NODE_IS_EMPTY) != 0);
3027 * @reader: the xmlTextReaderPtr used
3034 xmlTextReaderLocalName(xmlTextReaderPtr reader) {
3036 if ((reader == NULL) || (reader->node == NULL))
3038 if (reader->curnode != NULL)
3039 node = reader->curnode;
3041 node = reader->node;
3051 return(xmlTextReaderName(reader));
3057 * @reader: the xmlTextReaderPtr used
3062 * string will be deallocated with the reader.
3065 xmlTextReaderConstLocalName(xmlTextReaderPtr reader) {
3067 if ((reader == NULL) || (reader->node == NULL))
3069 if (reader->curnode != NULL)
3070 node = reader->curnode;
3072 node = reader->node;
3082 return(xmlTextReaderConstName(reader));
3088 * @reader: the xmlTextReaderPtr used
3095 xmlTextReaderName(xmlTextReaderPtr reader) {
3099 if ((reader == NULL) || (reader->node == NULL))
3101 if (reader->curnode != NULL)
3102 node = reader->curnode;
3104 node = reader->node;
3163 * @reader: the xmlTextReaderPtr used
3168 * deallocated with the reader.
3171 xmlTextReaderConstName(xmlTextReaderPtr reader) {
3174 if ((reader == NULL) || (reader->node == NULL))
3176 if (reader->curnode != NULL)
3177 node = reader->curnode;
3179 node = reader->node;
3231 * @reader: the xmlTextReaderPtr used
3238 xmlTextReaderPrefix(xmlTextReaderPtr reader) {
3240 if ((reader == NULL) || (reader->node == NULL))
3242 if (reader->curnode != NULL)
3243 node = reader->curnode;
3245 node = reader->node;
3262 * @reader: the xmlTextReaderPtr used
3267 * with the reader.
3270 xmlTextReaderConstPrefix(xmlTextReaderPtr reader) {
3272 if ((reader == NULL) || (reader->node == NULL))
3274 if (reader->curnode != NULL)
3275 node = reader->curnode;
3277 node = reader->node;
3294 * @reader: the xmlTextReaderPtr used
3301 xmlTextReaderNamespaceUri(xmlTextReaderPtr reader) {
3303 if ((reader == NULL) || (reader->node == NULL))
3305 if (reader->curnode != NULL)
3306 node = reader->curnode;
3308 node = reader->node;
3321 * @reader: the xmlTextReaderPtr used
3326 * will be deallocated with the reader
3329 xmlTextReaderConstNamespaceUri(xmlTextReaderPtr reader) {
3331 if ((reader == NULL) || (reader->node == NULL))
3333 if (reader->curnode != NULL)
3334 node = reader->curnode;
3336 node = reader->node;
3349 * @reader: the xmlTextReaderPtr used
3356 xmlTextReaderBaseUri(xmlTextReaderPtr reader) {
3357 if ((reader == NULL) || (reader->node == NULL))
3359 return(xmlNodeGetBase(NULL, reader->node));
3364 * @reader: the xmlTextReaderPtr used
3369 * will be deallocated with the reader
3372 xmlTextReaderConstBaseUri(xmlTextReaderPtr reader) {
3376 if ((reader == NULL) || (reader->node == NULL))
3378 tmp = xmlNodeGetBase(NULL, reader->node);
3388 * @reader: the xmlTextReaderPtr used
3395 xmlTextReaderDepth(xmlTextReaderPtr reader) {
3396 if (reader == NULL)
3398 if (reader->node == NULL)
3401 if (reader->curnode != NULL) {
3402 if ((reader->curnode->type == XML_ATTRIBUTE_NODE) ||
3403 (reader->curnode->type == XML_NAMESPACE_DECL))
3404 return(reader->depth + 1);
3405 return(reader->depth + 2);
3407 return(reader->depth);
3412 * @reader: the xmlTextReaderPtr used
3419 xmlTextReaderHasAttributes(xmlTextReaderPtr reader) {
3421 if (reader == NULL)
3423 if (reader->node == NULL)
3425 if (reader->curnode != NULL)
3426 node = reader->curnode;
3428 node = reader->node;
3439 * @reader: the xmlTextReaderPtr used
3446 xmlTextReaderHasValue(xmlTextReaderPtr reader) {
3448 if (reader == NULL)
3450 if (reader->node == NULL)
3452 if (reader->curnode != NULL)
3453 node = reader->curnode;
3455 node = reader->node;
3473 * @reader: the xmlTextReaderPtr used
3481 xmlTextReaderValue(xmlTextReaderPtr reader) {
3483 if (reader == NULL)
3485 if (reader->node == NULL)
3487 if (reader->curnode != NULL)
3488 node = reader->curnode;
3490 node = reader->node;
3519 * @reader: the xmlTextReaderPtr used
3527 xmlTextReaderConstValue(xmlTextReaderPtr reader) {
3529 if (reader == NULL)
3531 if (reader->node == NULL)
3533 if (reader->curnode != NULL)
3534 node = reader->curnode;
3536 node = reader->node;
3549 if (reader->buffer == NULL)
3550 reader->buffer = xmlBufferCreateSize(100);
3551 if (reader->buffer == NULL) {
3556 reader->buffer->use = 0;
3557 xmlNodeBufGetContent(reader->buffer, node);
3558 return(reader->buffer->content);
3575 * @reader: the xmlTextReaderPtr used
3583 xmlTextReaderIsDefault(xmlTextReaderPtr reader) {
3584 if (reader == NULL)
3591 * @reader: the xmlTextReaderPtr used
3598 xmlTextReaderQuoteChar(xmlTextReaderPtr reader) {
3599 if (reader == NULL)
3607 * @reader: the xmlTextReaderPtr used
3614 xmlTextReaderXmlLang(xmlTextReaderPtr reader) {
3615 if (reader == NULL)
3617 if (reader->node == NULL)
3619 return(xmlNodeGetLang(reader->node));
3624 * @reader: the xmlTextReaderPtr used
3631 xmlTextReaderConstXmlLang(xmlTextReaderPtr reader) {
3635 if (reader == NULL)
3637 if (reader->node == NULL)
3639 tmp = xmlNodeGetLang(reader->node);
3649 * @reader: the xmlTextReaderPtr used
3652 * Get an interned string from the reader, allows for example to
3656 * string will be deallocated with the reader.
3659 xmlTextReaderConstString(xmlTextReaderPtr reader, const xmlChar *str) {
3660 if (reader == NULL)
3667 * @reader: the xmlTextReaderPtr used
3678 xmlTextReaderNormalization(xmlTextReaderPtr reader) {
3679 if (reader == NULL)
3692 * @reader: the xmlTextReaderPtr used
3703 xmlTextReaderSetParserProp(xmlTextReaderPtr reader, int prop, int value) {
3707 if ((reader == NULL) || (reader->ctxt == NULL))
3709 ctxt = reader->ctxt;
3715 if (reader->mode != XML_TEXTREADER_MODE_INITIAL)
3734 reader->validate = XML_TEXTREADER_VALIDATE_DTD;
3752 * @reader: the xmlTextReaderPtr used
3760 xmlTextReaderGetParserProp(xmlTextReaderPtr reader, int prop) {
3764 if ((reader == NULL) || (reader->ctxt == NULL))
3766 ctxt = reader->ctxt;
3778 return(reader->validate);
3788 * @reader: the user data (XML reader context)
3795 xmlTextReaderGetParserLineNumber(xmlTextReaderPtr reader)
3797 if ((reader == NULL) || (reader->ctxt == NULL) ||
3798 (reader->ctxt->input == NULL)) {
3801 return (reader->ctxt->input->line);
3806 * @reader: the user data (XML reader context)
3813 xmlTextReaderGetParserColumnNumber(xmlTextReaderPtr reader)
3815 if ((reader == NULL) || (reader->ctxt == NULL) ||
3816 (reader->ctxt->input == NULL)) {
3819 return (reader->ctxt->input->col);
3824 * @reader: the xmlTextReaderPtr used
3833 xmlTextReaderCurrentNode(xmlTextReaderPtr reader) {
3834 if (reader == NULL)
3837 if (reader->curnode != NULL)
3838 return(reader->curnode);
3839 return(reader->node);
3844 * @reader: the xmlTextReaderPtr used
3853 xmlTextReaderPreserve(xmlTextReaderPtr reader) {
3856 if (reader == NULL)
3859 if (reader->curnode != NULL)
3860 cur = reader->curnode;
3862 cur = reader->node;
3870 reader->preserves++;
3884 * @reader: the xmlTextReaderPtr used
3895 xmlTextReaderPreservePattern(xmlTextReaderPtr reader, const xmlChar *pattern,
3900 if ((reader == NULL) || (pattern == NULL))
3903 comp = xmlPatterncompile(pattern, reader->dict, 0, namespaces);
3907 if (reader->patternMax <= 0) {
3908 reader->patternMax = 4;
3909 reader->patternTab = (xmlPatternPtr *) xmlMalloc(reader->patternMax *
3910 sizeof(reader->patternTab[0]));
3911 if (reader->patternTab == NULL) {
3916 if (reader->patternNr >= reader->patternMax) {
3918 reader->patternMax *= 2;
3919 tmp = (xmlPatternPtr *) xmlRealloc(reader->patternTab,
3920 reader->patternMax *
3921 sizeof(reader->patternTab[0]));
3924 reader->patternMax /= 2;
3927 reader->patternTab = tmp;
3929 reader->patternTab[reader->patternNr] = comp;
3930 return(reader->patternNr++);
3936 * @reader: the xmlTextReaderPtr used
3940 * NOTE: as a result of this call, the reader will not destroy the
3942 * is needed once the reader parsing has finished.
3947 xmlTextReaderCurrentDoc(xmlTextReaderPtr reader) {
3948 if (reader == NULL)
3950 if (reader->doc != NULL)
3951 return(reader->doc);
3952 if ((reader == NULL) || (reader->ctxt == NULL) ||
3953 (reader->ctxt->myDoc == NULL))
3956 reader->preserve = 1;
3957 return(reader->ctxt->myDoc);
3973 xmlTextReaderPtr reader = (xmlTextReaderPtr) ctx;
3979 if (!reader->errorFunc) {
3982 reader->errorFunc(reader->errorFuncArg, str, XML_PARSER_SEVERITY_VALIDITY_ERROR, NULL /* locator */);
3991 xmlTextReaderPtr reader = (xmlTextReaderPtr) ctx;
3997 if (!reader->errorFunc) {
4000 reader->errorFunc(reader->errorFuncArg, str, XML_PARSER_SEVERITY_VALIDITY_WARNING, NULL /* locator */);
4012 xmlTextReaderPtr reader = (xmlTextReaderPtr) userData;
4014 if (reader->sErrorFunc) {
4015 reader->sErrorFunc(reader->errorFuncArg, error);
4017 xmlTextReaderStructuredError(reader, error);
4023 * @reader: the xmlTextReaderPtr used
4029 @ The @schema should not be freed until the reader is deallocated
4036 xmlTextReaderRelaxNGSetSchema(xmlTextReaderPtr reader, xmlRelaxNGPtr schema) {
4037 if (reader == NULL)
4040 if (reader->rngSchemas != NULL) {
4041 xmlRelaxNGFree(reader->rngSchemas);
4042 reader->rngSchemas = NULL;
4044 if (reader->rngValidCtxt != NULL) {
4045 xmlRelaxNGFreeValidCtxt(reader->rngValidCtxt);
4046 reader->rngValidCtxt = NULL;
4050 if (reader->mode != XML_TEXTREADER_MODE_INITIAL)
4052 if (reader->rngSchemas != NULL) {
4053 xmlRelaxNGFree(reader->rngSchemas);
4054 reader->rngSchemas = NULL;
4056 if (reader->rngValidCtxt != NULL) {
4057 xmlRelaxNGFreeValidCtxt(reader->rngValidCtxt);
4058 reader->rngValidCtxt = NULL;
4060 reader->rngValidCtxt = xmlRelaxNGNewValidCtxt(schema);
4061 if (reader->rngValidCtxt == NULL)
4063 if (reader->errorFunc != NULL) {
4064 xmlRelaxNGSetValidErrors(reader->rngValidCtxt,
4067 reader);
4069 if (reader->sErrorFunc != NULL) {
4070 xmlRelaxNGSetValidStructuredErrors(reader->rngValidCtxt,
4072 reader);
4074 reader->rngValidErrors = 0;
4075 reader->rngFullNode = NULL;
4076 reader->validate = XML_TEXTREADER_VALIDATE_RNG;
4082 * @reader: the xmlTextReaderPtr used
4088 @ The @schema should not be freed until the reader is deallocated
4095 xmlTextReaderSetSchema(xmlTextReaderPtr reader, xmlSchemaPtr schema) {
4096 if (reader == NULL)
4099 if (reader->xsdPlug != NULL) {
4100 xmlSchemaSAXUnplug(reader->xsdPlug);
4101 reader->xsdPlug = NULL;
4103 if (reader->xsdValidCtxt != NULL) {
4104 if (! reader->xsdPreserveCtxt)
4105 xmlSchemaFreeValidCtxt(reader->xsdValidCtxt);
4106 reader->xsdValidCtxt = NULL;
4108 reader->xsdPreserveCtxt = 0;
4109 if (reader->xsdSchemas != NULL) {
4110 xmlSchemaFree(reader->xsdSchemas);
4111 reader->xsdSchemas = NULL;
4115 if (reader->mode != XML_TEXTREADER_MODE_INITIAL)
4117 if (reader->xsdPlug != NULL) {
4118 xmlSchemaSAXUnplug(reader->xsdPlug);
4119 reader->xsdPlug = NULL;
4121 if (reader->xsdValidCtxt != NULL) {
4122 if (! reader->xsdPreserveCtxt)
4123 xmlSchemaFreeValidCtxt(reader->xsdValidCtxt);
4124 reader->xsdValidCtxt = NULL;
4126 reader->xsdPreserveCtxt = 0;
4127 if (reader->xsdSchemas != NULL) {
4128 xmlSchemaFree(reader->xsdSchemas);
4129 reader->xsdSchemas = NULL;
4131 reader->xsdValidCtxt = xmlSchemaNewValidCtxt(schema);
4132 if (reader->xsdValidCtxt == NULL) {
4133 xmlSchemaFree(reader->xsdSchemas);
4134 reader->xsdSchemas = NULL;
4137 reader->xsdPlug = xmlSchemaSAXPlug(reader->xsdValidCtxt,
4138 &(reader->ctxt->sax),
4139 &(reader->ctxt->userData));
4140 if (reader->xsdPlug == NULL) {
4141 xmlSchemaFree(reader->xsdSchemas);
4142 reader->xsdSchemas = NULL;
4143 xmlSchemaFreeValidCtxt(reader->xsdValidCtxt);
4144 reader->xsdValidCtxt = NULL;
4147 if (reader->errorFunc != NULL) {
4148 xmlSchemaSetValidErrors(reader->xsdValidCtxt,
4151 reader);
4153 if (reader->sErrorFunc != NULL) {
4154 xmlSchemaSetValidStructuredErrors(reader->xsdValidCtxt,
4156 reader);
4158 reader->xsdValidErrors = 0;
4159 reader->validate = XML_TEXTREADER_VALIDATE_XSD;
4165 * @reader: the xmlTextReaderPtr used
4176 xmlTextReaderRelaxNGValidate(xmlTextReaderPtr reader, const char *rng) {
4179 if (reader == NULL)
4183 if (reader->rngValidCtxt != NULL) {
4184 xmlRelaxNGFreeValidCtxt(reader->rngValidCtxt);
4185 reader->rngValidCtxt = NULL;
4187 if (reader->rngSchemas != NULL) {
4188 xmlRelaxNGFree(reader->rngSchemas);
4189 reader->rngSchemas = NULL;
4193 if (reader->mode != XML_TEXTREADER_MODE_INITIAL)
4195 if (reader->rngSchemas != NULL) {
4196 xmlRelaxNGFree(reader->rngSchemas);
4197 reader->rngSchemas = NULL;
4199 if (reader->rngValidCtxt != NULL) {
4200 xmlRelaxNGFreeValidCtxt(reader->rngValidCtxt);
4201 reader->rngValidCtxt = NULL;
4204 if (reader->errorFunc != NULL) {
4208 reader);
4210 if (reader->sErrorFunc != NULL) {
4211 xmlRelaxNGSetValidStructuredErrors(reader->rngValidCtxt,
4213 reader);
4215 reader->rngSchemas = xmlRelaxNGParse(ctxt);
4217 if (reader->rngSchemas == NULL)
4219 reader->rngValidCtxt = xmlRelaxNGNewValidCtxt(reader->rngSchemas);
4220 if (reader->rngValidCtxt == NULL) {
4221 xmlRelaxNGFree(reader->rngSchemas);
4222 reader->rngSchemas = NULL;
4225 if (reader->errorFunc != NULL) {
4226 xmlRelaxNGSetValidErrors(reader->rngValidCtxt,
4229 reader);
4231 if (reader->sErrorFunc != NULL) {
4232 xmlRelaxNGSetValidStructuredErrors(reader->rngValidCtxt,
4234 reader);
4236 reader->rngValidErrors = 0;
4237 reader->rngFullNode = NULL;
4238 reader->validate = XML_TEXTREADER_VALIDATE_RNG;
4244 * @reader: the xmlTextReaderPtr used
4257 xmlTextReaderSchemaValidateInternal(xmlTextReaderPtr reader,
4262 if (reader == NULL)
4269 ((reader->mode != XML_TEXTREADER_MODE_INITIAL) ||
4270 (reader->ctxt == NULL)))
4274 if (reader->xsdPlug != NULL) {
4275 xmlSchemaSAXUnplug(reader->xsdPlug);
4276 reader->xsdPlug = NULL;
4278 if (reader->xsdValidCtxt != NULL) {
4279 if (! reader->xsdPreserveCtxt)
4280 xmlSchemaFreeValidCtxt(reader->xsdValidCtxt);
4281 reader->xsdValidCtxt = NULL;
4283 reader->xsdPreserveCtxt = 0;
4284 if (reader->xsdSchemas != NULL) {
4285 xmlSchemaFree(reader->xsdSchemas);
4286 reader->xsdSchemas = NULL;
4298 if (reader->errorFunc != NULL) {
4302 reader);
4304 reader->xsdSchemas = xmlSchemaParse(pctxt);
4306 if (reader->xsdSchemas == NULL)
4308 reader->xsdValidCtxt = xmlSchemaNewValidCtxt(reader->xsdSchemas);
4309 if (reader->xsdValidCtxt == NULL) {
4310 xmlSchemaFree(reader->xsdSchemas);
4311 reader->xsdSchemas = NULL;
4314 reader->xsdPlug = xmlSchemaSAXPlug(reader->xsdValidCtxt,
4315 &(reader->ctxt->sax),
4316 &(reader->ctxt->userData));
4317 if (reader->xsdPlug == NULL) {
4318 xmlSchemaFree(reader->xsdSchemas);
4319 reader->xsdSchemas = NULL;
4320 xmlSchemaFreeValidCtxt(reader->xsdValidCtxt);
4321 reader->xsdValidCtxt = NULL;
4326 reader->xsdValidCtxt = ctxt;
4327 reader->xsdPreserveCtxt = 1;
4328 reader->xsdPlug = xmlSchemaSAXPlug(reader->xsdValidCtxt,
4329 &(reader->ctxt->sax),
4330 &(reader->ctxt->userData));
4331 if (reader->xsdPlug == NULL) {
4332 reader->xsdValidCtxt = NULL;
4333 reader->xsdPreserveCtxt = 0;
4339 * the reader channels.
4343 if (reader->errorFunc != NULL) {
4344 xmlSchemaSetValidErrors(reader->xsdValidCtxt,
4347 reader);
4349 if (reader->sErrorFunc != NULL) {
4350 xmlSchemaSetValidStructuredErrors(reader->xsdValidCtxt,
4352 reader);
4354 reader->xsdValidErrors = 0;
4355 reader->validate = XML_TEXTREADER_VALIDATE_XSD;
4361 * @reader: the xmlTextReaderPtr used
4373 xmlTextReaderSchemaValidateCtxt(xmlTextReaderPtr reader,
4377 return(xmlTextReaderSchemaValidateInternal(reader, NULL, ctxt, options));
4382 * @reader: the xmlTextReaderPtr used
4393 xmlTextReaderSchemaValidate(xmlTextReaderPtr reader, const char *xsd)
4395 return(xmlTextReaderSchemaValidateInternal(reader, xsd, NULL, 0));
4401 * @reader: the xmlTextReaderPtr used
4411 xmlTextReaderIsNamespaceDecl(xmlTextReaderPtr reader) {
4413 if (reader == NULL)
4415 if (reader->node == NULL)
4417 if (reader->curnode != NULL)
4418 node = reader->curnode;
4420 node = reader->node;
4430 * @reader: the xmlTextReaderPtr used
4435 * in case of error. The string is deallocated with the reader.
4438 xmlTextReaderConstXmlVersion(xmlTextReaderPtr reader) {
4440 if (reader == NULL)
4442 if (reader->doc != NULL)
4443 doc = reader->doc;
4444 else if (reader->ctxt != NULL)
4445 doc = reader->ctxt->myDoc;
4457 * @reader: the xmlTextReaderPtr used
4466 xmlTextReaderStandalone(xmlTextReaderPtr reader) {
4468 if (reader == NULL)
4470 if (reader->doc != NULL)
4471 doc = reader->doc;
4472 else if (reader->ctxt != NULL)
4473 doc = reader->ctxt->myDoc;
4596 xmlTextReaderPtr reader = (xmlTextReaderPtr)ctx->_private;
4599 if (reader->errorFunc)
4600 reader->errorFunc(reader->errorFuncArg,
4611 xmlTextReaderPtr reader = (xmlTextReaderPtr) ctx->_private;
4613 if (error && reader->sErrorFunc) {
4614 reader->sErrorFunc(reader->errorFuncArg,
4680 * @reader: the xmlTextReaderPtr used
4689 xmlTextReaderSetErrorHandler(xmlTextReaderPtr reader,
4693 reader->ctxt->sax->error = xmlTextReaderError;
4694 reader->ctxt->sax->serror = NULL;
4695 reader->ctxt->vctxt.error = xmlTextReaderValidityError;
4696 reader->ctxt->sax->warning = xmlTextReaderWarning;
4697 reader->ctxt->vctxt.warning = xmlTextReaderValidityWarning;
4698 reader->errorFunc = f;
4699 reader->sErrorFunc = NULL;
4700 reader->errorFuncArg = arg;
4702 if (reader->rngValidCtxt) {
4703 xmlRelaxNGSetValidErrors(reader->rngValidCtxt,
4706 reader);
4707 xmlRelaxNGSetValidStructuredErrors(reader->rngValidCtxt, NULL, reader);
4709 if (reader->xsdValidCtxt) {
4710 xmlSchemaSetValidErrors(reader->xsdValidCtxt,
4713 reader);
4714 xmlSchemaSetValidStructuredErrors(reader->xsdValidCtxt, NULL, reader);
4720 reader->ctxt->sax->error = xmlParserError;
4721 reader->ctxt->vctxt.error = xmlParserValidityError;
4722 reader->ctxt->sax->warning = xmlParserWarning;
4723 reader->ctxt->vctxt.warning = xmlParserValidityWarning;
4724 reader->errorFunc = NULL;
4725 reader->sErrorFunc = NULL;
4726 reader->errorFuncArg = NULL;
4728 if (reader->rngValidCtxt) {
4729 xmlRelaxNGSetValidErrors(reader->rngValidCtxt, NULL, NULL, reader);
4730 xmlRelaxNGSetValidStructuredErrors(reader->rngValidCtxt, NULL, reader);
4732 if (reader->xsdValidCtxt) {
4733 xmlSchemaSetValidErrors(reader->xsdValidCtxt, NULL, NULL, reader);
4734 xmlSchemaSetValidStructuredErrors(reader->xsdValidCtxt, NULL, reader);
4742 * @reader: the xmlTextReaderPtr used
4751 xmlTextReaderSetStructuredErrorHandler(xmlTextReaderPtr reader,
4755 reader->ctxt->sax->error = NULL;
4756 reader->ctxt->sax->serror = xmlTextReaderStructuredError;
4757 reader->ctxt->vctxt.error = xmlTextReaderValidityError;
4758 reader->ctxt->sax->warning = xmlTextReaderWarning;
4759 reader->ctxt->vctxt.warning = xmlTextReaderValidityWarning;
4760 reader->sErrorFunc = f;
4761 reader->errorFunc = NULL;
4762 reader->errorFuncArg = arg;
4764 if (reader->rngValidCtxt) {
4765 xmlRelaxNGSetValidErrors(reader->rngValidCtxt, NULL, NULL, reader);
4766 xmlRelaxNGSetValidStructuredErrors(reader->rngValidCtxt,
4768 reader);
4770 if (reader->xsdValidCtxt) {
4771 xmlSchemaSetValidErrors(reader->xsdValidCtxt, NULL, NULL, reader);
4772 xmlSchemaSetValidStructuredErrors(reader->xsdValidCtxt,
4774 reader);
4780 reader->ctxt->sax->error = xmlParserError;
4781 reader->ctxt->sax->serror = NULL;
4782 reader->ctxt->vctxt.error = xmlParserValidityError;
4783 reader->ctxt->sax->warning = xmlParserWarning;
4784 reader->ctxt->vctxt.warning = xmlParserValidityWarning;
4785 reader->errorFunc = NULL;
4786 reader->sErrorFunc = NULL;
4787 reader->errorFuncArg = NULL;
4789 if (reader->rngValidCtxt) {
4790 xmlRelaxNGSetValidErrors(reader->rngValidCtxt, NULL, NULL, reader);
4791 xmlRelaxNGSetValidStructuredErrors(reader->rngValidCtxt, NULL, reader);
4793 if (reader->xsdValidCtxt) {
4794 xmlSchemaSetValidErrors(reader->xsdValidCtxt, NULL, NULL, reader);
4795 xmlSchemaSetValidStructuredErrors(reader->xsdValidCtxt, NULL, reader);
4803 * @reader: the xmlTextReaderPtr used
4810 xmlTextReaderIsValid(xmlTextReaderPtr reader) {
4811 if (reader == NULL) return(-1);
4813 if (reader->validate == XML_TEXTREADER_VALIDATE_RNG)
4814 return(reader->rngValidErrors == 0);
4815 if (reader->validate == XML_TEXTREADER_VALIDATE_XSD)
4816 return(reader->xsdValidErrors == 0);
4818 if ((reader->ctxt != NULL) && (reader->ctxt->validate == 1))
4819 return(reader->ctxt->valid);
4825 * @reader: the xmlTextReaderPtr used
4832 xmlTextReaderGetErrorHandler(xmlTextReaderPtr reader,
4835 if (f != NULL) *f = reader->errorFunc;
4836 if (arg != NULL) *arg = reader->errorFuncArg;
4848 * @reader: an XML reader
4854 * Setup an XML reader with new options
4859 xmlTextReaderSetup(xmlTextReaderPtr reader,
4863 if (reader == NULL)
4867 * we force the generation of compact text nodes on the reader
4872 reader->doc = NULL;
4873 reader->entNr = 0;
4874 reader->parserFlags = options;
4875 reader->validate = XML_TEXTREADER_NOT_VALIDATE;
4876 if ((input != NULL) && (reader->input != NULL) &&
4877 (reader->allocs & XML_TEXTREADER_INPUT)) {
4878 xmlFreeParserInputBuffer(reader->input);
4879 reader->input = NULL;
4880 reader->allocs -= XML_TEXTREADER_INPUT;
4883 reader->input = input;
4884 reader->allocs |= XML_TEXTREADER_INPUT;
4886 if (reader->buffer == NULL)
4887 reader->buffer = xmlBufferCreateSize(100);
4888 if (reader->buffer == NULL) {
4893 if (reader->sax == NULL)
4894 reader->sax = (xmlSAXHandler *) xmlMalloc(sizeof(xmlSAXHandler));
4895 if (reader->sax == NULL) {
4900 xmlSAXVersion(reader->sax, 2);
4901 reader->startElement = reader->sax->startElement;
4902 reader->sax->startElement = xmlTextReaderStartElement;
4903 reader->endElement = reader->sax->endElement;
4904 reader->sax->endElement = xmlTextReaderEndElement;
4906 if (reader->sax->initialized == XML_SAX2_MAGIC) {
4908 reader->startElementNs = reader->sax->startElementNs;
4909 reader->sax->startElementNs = xmlTextReaderStartElementNs;
4910 reader->endElementNs = reader->sax->endElementNs;
4911 reader->sax->endElementNs = xmlTextReaderEndElementNs;
4914 reader->startElementNs = NULL;
4915 reader->endElementNs = NULL;
4918 reader->characters = reader->sax->characters;
4919 reader->sax->characters = xmlTextReaderCharacters;
4920 reader->sax->ignorableWhitespace = xmlTextReaderCharacters;
4921 reader->cdataBlock = reader->sax->cdataBlock;
4922 reader->sax->cdataBlock = xmlTextReaderCDataBlock;
4924 reader->mode = XML_TEXTREADER_MODE_INITIAL;
4925 reader->node = NULL;
4926 reader->curnode = NULL;
4928 if (reader->input->buffer->use < 4) {
4931 if (reader->ctxt == NULL) {
4932 if (reader->input->buffer->use >= 4) {
4933 reader->ctxt = xmlCreatePushParserCtxt(reader->sax, NULL,
4934 (const char *) reader->input->buffer->content, 4, URL);
4935 reader->base = 0;
4936 reader->cur = 4;
4938 reader->ctxt =
4939 xmlCreatePushParserCtxt(reader->sax, NULL, NULL, 0, URL);
4940 reader->base = 0;
4941 reader->cur = 0;
4948 xmlCtxtReset(reader->ctxt);
4951 inputStream = xmlNewInputStream(reader->ctxt);
4968 inputPush(reader->ctxt, inputStream);
4969 reader->cur = 0;
4971 if (reader->ctxt == NULL) {
4977 if (reader->dict != NULL) {
4978 if (reader->ctxt->dict != NULL) {
4979 if (reader->dict != reader->ctxt->dict) {
4980 xmlDictFree(reader->dict);
4981 reader->dict = reader->ctxt->dict;
4984 reader->ctxt->dict = reader->dict;
4987 if (reader->ctxt->dict == NULL)
4988 reader->ctxt->dict = xmlDictCreate();
4989 reader->dict = reader->ctxt->dict;
4991 reader->ctxt->_private = reader;
4992 reader->ctxt->linenumbers = 1;
4993 reader->ctxt->dictNames = 1;
4997 reader->ctxt->docdict = 1;
4998 reader->ctxt->parseMode = XML_PARSE_READER;
5001 if (reader->xincctxt != NULL) {
5002 xmlXIncludeFreeContext(reader->xincctxt);
5003 reader->xincctxt = NULL;
5006 reader->xinclude = 1;
5007 reader->xinclude_name = xmlDictLookup(reader->dict, XINCLUDE_NODE, -1);
5010 reader->xinclude = 0;
5011 reader->in_xinclude = 0;
5014 if (reader->patternTab == NULL) {
5015 reader->patternNr = 0;
5016 reader->patternMax = 0;
5018 while (reader->patternNr > 0) {
5019 reader->patternNr--;
5020 if (reader->patternTab[reader->patternNr] != NULL) {
5021 xmlFreePattern(reader->patternTab[reader->patternNr]);
5022 reader->patternTab[reader->patternNr] = NULL;
5028 reader->validate = XML_TEXTREADER_VALIDATE_DTD;
5030 xmlCtxtUseOptions(reader->ctxt, options);
5036 xmlSwitchToEncoding(reader->ctxt, hdlr);
5038 if ((URL != NULL) && (reader->ctxt->input != NULL) &&
5039 (reader->ctxt->input->filename == NULL))
5040 reader->ctxt->input->filename = (char *)
5043 reader->doc = NULL;
5050 * @reader: an XML reader
5053 * by the reader, relative to the start of the current entity.
5055 * for the parser context associated with the reader.
5062 xmlTextReaderByteConsumed(xmlTextReaderPtr reader) {
5063 if ((reader == NULL) || (reader->ctxt == NULL))
5065 return(xmlByteConsumed(reader->ctxt));
5075 * Returns the new reader or NULL in case of error.
5116 * Returns the new reader or NULL in case of error.
5141 * Returns the new reader or NULL in case of error.
5146 xmlTextReaderPtr reader;
5148 reader = xmlNewTextReaderFilename(filename);
5149 if (reader == NULL)
5151 xmlTextReaderSetup(reader, NULL, NULL, encoding, options);
5152 return (reader);
5166 * Returns the new reader or NULL in case of error.
5172 xmlTextReaderPtr reader;
5180 reader = xmlNewTextReader(buf, URL);
5181 if (reader == NULL) {
5185 reader->allocs |= XML_TEXTREADER_INPUT;
5186 xmlTextReaderSetup(reader, NULL, URL, encoding, options);
5187 return (reader);
5200 * reader is closed or reset.
5202 * Returns the new reader or NULL in case of error.
5207 xmlTextReaderPtr reader;
5217 reader = xmlNewTextReader(input, URL);
5218 if (reader == NULL) {
5222 reader->allocs |= XML_TEXTREADER_INPUT;
5223 xmlTextReaderSetup(reader, NULL, URL, encoding, options);
5224 return (reader);
5239 * Returns the new reader or NULL in case of error.
5246 xmlTextReaderPtr reader;
5256 reader = xmlNewTextReader(input, URL);
5257 if (reader == NULL) {
5261 reader->allocs |= XML_TEXTREADER_INPUT;
5262 xmlTextReaderSetup(reader, NULL, URL, encoding, options);
5263 return (reader);
5268 * @reader: an XML reader
5272 * This reuses the existing @reader xmlTextReader.
5277 xmlReaderNewWalker(xmlTextReaderPtr reader, xmlDocPtr doc)
5281 if (reader == NULL)
5284 if (reader->input != NULL) {
5285 xmlFreeParserInputBuffer(reader->input);
5287 if (reader->ctxt != NULL) {
5288 xmlCtxtReset(reader->ctxt);
5291 reader->entNr = 0;
5292 reader->input = NULL;
5293 reader->mode = XML_TEXTREADER_MODE_INITIAL;
5294 reader->node = NULL;
5295 reader->curnode = NULL;
5296 reader->base = 0;
5297 reader->cur = 0;
5298 reader->allocs = XML_TEXTREADER_CTXT;
5299 reader->doc = doc;
5300 reader->state = XML_TEXTREADER_START;
5301 if (reader->dict == NULL) {
5302 if ((reader->ctxt != NULL) && (reader->ctxt->dict != NULL))
5303 reader->dict = reader->ctxt->dict;
5305 reader->dict = xmlDictCreate();
5312 * @reader: an XML reader
5320 * This reuses the existing @reader xmlTextReader.
5325 xmlReaderNewDoc(xmlTextReaderPtr reader, const xmlChar * cur,
5333 if (reader == NULL)
5337 return (xmlReaderNewMemory(reader, (const char *)cur, len,
5343 * @reader: an XML reader
5350 * This reuses the existing @reader xmlTextReader.
5355 xmlReaderNewFile(xmlTextReaderPtr reader, const char *filename,
5362 if (reader == NULL)
5370 return (xmlTextReaderSetup(reader, input, filename, encoding, options));
5375 * @reader: an XML reader
5384 * This reuses the existing @reader xmlTextReader.
5389 xmlReaderNewMemory(xmlTextReaderPtr reader, const char *buffer, int size,
5394 if (reader == NULL)
5404 return (xmlTextReaderSetup(reader, input, URL, encoding, options));
5409 * @reader: an XML reader
5417 * reader is closed or reset.
5419 * This reuses the existing @reader xmlTextReader.
5424 xmlReaderNewFd(xmlTextReaderPtr reader, int fd,
5431 if (reader == NULL)
5438 return (xmlTextReaderSetup(reader, input, URL, encoding, options));
5443 * @reader: an XML reader
5454 * This reuses the existing @reader xmlTextReader.
5459 xmlReaderNewIO(xmlTextReaderPtr reader, xmlInputReadCallback ioread,
5467 if (reader == NULL)
5474 return (xmlTextReaderSetup(reader, input, URL, encoding, options));