* xmlTextReaderName: * @reader: the xmlTextReaderPtr used * * The qualified name of the node, equal to Prefix :LocalName. * * Returns the local name or NULL if not available, * if non NULL it need to be freed by the caller. */
| 3176 | * if non NULL it need to be freed by the caller. |
| 3177 | */ |
| 3178 | xmlChar * |
| 3179 | xmlTextReaderName(xmlTextReaderPtr reader) { |
| 3180 | xmlNodePtr node; |
| 3181 | xmlChar *ret; |
| 3182 | |
| 3183 | if ((reader == NULL) || (reader->node == NULL)) |
| 3184 | return(NULL); |
| 3185 | if (reader->curnode != NULL) |
| 3186 | node = reader->curnode; |
| 3187 | else |
| 3188 | node = reader->node; |
| 3189 | switch (node->type) { |
| 3190 | case XML_ELEMENT_NODE: |
| 3191 | case XML_ATTRIBUTE_NODE: |
| 3192 | if ((node->ns == NULL) || |
| 3193 | (node->ns->prefix == NULL)) |
| 3194 | return(readerStrdup(reader, node->name)); |
| 3195 | |
| 3196 | ret = xmlBuildQName(node->name, node->ns->prefix, NULL, 0); |
| 3197 | if (ret == NULL) |
| 3198 | xmlTextReaderErrMemory(reader); |
| 3199 | return(ret); |
| 3200 | case XML_TEXT_NODE: |
| 3201 | return(readerStrdup(reader, BAD_CAST "#text")); |
| 3202 | case XML_CDATA_SECTION_NODE: |
| 3203 | return(readerStrdup(reader, BAD_CAST "#cdata-section")); |
| 3204 | case XML_ENTITY_NODE: |
| 3205 | case XML_ENTITY_REF_NODE: |
| 3206 | return(readerStrdup(reader, node->name)); |
| 3207 | case XML_PI_NODE: |
| 3208 | return(readerStrdup(reader, node->name)); |
| 3209 | case XML_COMMENT_NODE: |
| 3210 | return(readerStrdup(reader, BAD_CAST "#comment")); |
| 3211 | case XML_DOCUMENT_NODE: |
| 3212 | case XML_HTML_DOCUMENT_NODE: |
| 3213 | return(readerStrdup(reader, BAD_CAST "#document")); |
| 3214 | case XML_DOCUMENT_FRAG_NODE: |
| 3215 | return(readerStrdup(reader, BAD_CAST "#document-fragment")); |
| 3216 | case XML_NOTATION_NODE: |
| 3217 | return(readerStrdup(reader, node->name)); |
| 3218 | case XML_DOCUMENT_TYPE_NODE: |
| 3219 | case XML_DTD_NODE: |
| 3220 | return(readerStrdup(reader, node->name)); |
| 3221 | case XML_NAMESPACE_DECL: { |
| 3222 | xmlNsPtr ns = (xmlNsPtr) node; |
| 3223 | |
| 3224 | if (ns->prefix == NULL) |
| 3225 | return(readerStrdup(reader, BAD_CAST "xmlns")); |
| 3226 | ret = xmlBuildQName(ns->prefix, BAD_CAST "xmlns", NULL, 0); |
| 3227 | if (ret == NULL) |
| 3228 | xmlTextReaderErrMemory(reader); |
| 3229 | return(ret); |
| 3230 | } |
| 3231 | |
| 3232 | case XML_ELEMENT_DECL: |
| 3233 | case XML_ATTRIBUTE_DECL: |
| 3234 | case XML_ENTITY_DECL: |
| 3235 | case XML_XINCLUDE_START: |
no test coverage detected