44 assert(nodeptr != NULL);
54 if (nodeptr != NULL) {
67 if (nodeptr != NULL) {
68 if (nodeptr->nodeName != NULL) {
69 free(nodeptr->nodeName);
71 if (nodeptr->nodeValue != NULL) {
72 free(nodeptr->nodeValue);
74 if (nodeptr->namespaceURI != NULL) {
75 free(nodeptr->namespaceURI);
77 if (nodeptr->prefix != NULL) {
78 free(nodeptr->prefix);
80 if (nodeptr->localName != NULL) {
81 free(nodeptr->localName);
83 switch (nodeptr->nodeType) {
86 free(element->tagName);
102void ixmlNode_recursive_free(
IXML_Node *nodeptr)
104 if (nodeptr != NULL) {
105#ifdef IXML_HAVE_SCRIPTSUPPORT
106 IXML_BeforeFreeNode_t hndlr = Parser_getBeforeFree();
107 if (hndlr != NULL) hndlr(nodeptr);
128#ifdef IXML_HAVE_SCRIPTSUPPORT
129 IXML_BeforeFreeNode_t hndlr = Parser_getBeforeFree();
131 prev_child = nodeptr;
132 next_child = nodeptr->firstChild;
134 curr_child = next_child;
137 prev_child = curr_child;
138 curr_child = curr_child->firstChild;
140 curr_child = prev_child;
142 prev_child = curr_child;
143 curr_child = curr_child->nextSibling;
145 curr_child = prev_child;
146 next_child = curr_child->firstChild;
147 }
while (next_child);
148 curr_child = prev_child;
152 curr_attr = curr_child->firstAttr;
154 next_attr = curr_attr->nextSibling;
156 curr_attr = next_attr;
158 curr_child->firstAttr = 0;
160 if (curr_child != nodeptr) {
161 if (curr_child->prevSibling) {
162 next_child = curr_child->prevSibling;
163 next_child->nextSibling = 0;
165 next_child = curr_child->parentNode;
166 next_child->firstChild = 0;
169#ifdef IXML_HAVE_SCRIPTSUPPORT
175 }
while (curr_child != nodeptr);
180 if (nodeptr != NULL) {
181 return nodeptr->nodeName;
188 if (nodeptr != NULL) {
189 return nodeptr->localName;
202 const char* namespaceURI) {
203 if (nodeptr == NULL) {
204 return IXML_INVALID_PARAMETER;
207 if (nodeptr->namespaceURI != NULL) {
208 free(nodeptr->namespaceURI);
209 nodeptr->namespaceURI = NULL;
212 if (namespaceURI != NULL) {
213 nodeptr->namespaceURI = strdup(namespaceURI);
214 if (nodeptr->namespaceURI == NULL) {
215 return IXML_INSUFFICIENT_MEMORY;
229 const char* prefix) {
230 if (nodeptr == NULL) {
231 return IXML_INVALID_PARAMETER;
234 if (nodeptr->prefix != NULL) {
235 free(nodeptr->prefix);
236 nodeptr->prefix = NULL;
239 if (prefix != NULL) {
240 nodeptr->prefix = strdup(prefix);
241 if (nodeptr->prefix == NULL) {
242 return IXML_INSUFFICIENT_MEMORY;
258 const char* localName) {
259 assert(nodeptr != NULL);
261 if (nodeptr->localName != NULL) {
262 free(nodeptr->localName);
263 nodeptr->localName = NULL;
266 if (localName != NULL) {
267 nodeptr->localName = strdup(localName);
268 if (nodeptr->localName == NULL) {
269 return IXML_INSUFFICIENT_MEMORY;
279 if (nodeptr != NULL) {
280 retNamespaceURI = nodeptr->namespaceURI;
283 return retNamespaceURI;
289 if (nodeptr != NULL) {
290 prefix = nodeptr->prefix;
297 if (nodeptr != NULL) {
298 return nodeptr->nodeValue;
305 int rc = IXML_SUCCESS;
307 if (nodeptr == NULL) {
308 return IXML_INVALID_PARAMETER;
311 if (nodeptr->nodeValue != NULL) {
312 free(nodeptr->nodeValue);
313 nodeptr->nodeValue = NULL;
316 if (newNodeValue != NULL) {
317 nodeptr->nodeValue = strdup(newNodeValue);
318 if (nodeptr->nodeValue == NULL) {
319 return IXML_INSUFFICIENT_MEMORY;
327 if (nodeptr != NULL) {
328 return static_cast<unsigned short>(nodeptr->nodeType);
330 return static_cast<unsigned short>(eINVALID_NODE);
335 if (nodeptr != NULL) {
336 return nodeptr->parentNode;
343 if (nodeptr != NULL) {
344 return nodeptr->firstChild;
354 if (nodeptr != NULL) {
356 next = nodeptr->firstChild;
357 while (next != NULL) {
359 next = next->nextSibling;
368 if (nodeptr != NULL) {
369 return nodeptr->prevSibling;
376 if (nodeptr != NULL) {
377 return nodeptr->nextSibling;
384 if (nodeptr != NULL) {
403 if (ancestorNode != NULL && toFind != NULL) {
404 if (toFind->parentNode == ancestorNode) {
429 assert(nodeptr != NULL && toFind != NULL);
431 if (nodeptr != NULL && toFind != NULL)
432 found = toFind->parentNode == nodeptr;
449 assert(nodeptr != NULL && newChild != NULL);
451 switch (nodeptr->nodeType) {
452 case eATTRIBUTE_NODE:
454 case eCDATA_SECTION_NODE:
458 switch (newChild->nodeType) {
459 case eATTRIBUTE_NODE:
468 switch (newChild->nodeType) {
495 assert(srcNode != NULL && destNode != NULL);
497 return srcNode == destNode ||
498 (strcmp(srcNode->nodeName, destNode->nodeName) == 0 &&
499 strcmp(srcNode->nodeValue, destNode->nodeValue) == 0 &&
500 srcNode->nodeType == destNode->nodeType &&
501 strcmp(srcNode->namespaceURI, destNode->namespaceURI) == 0 &&
502 strcmp(srcNode->prefix, destNode->prefix) == 0 &&
503 strcmp(srcNode->localName, destNode->localName) == 0);
508 int ret = IXML_SUCCESS;
510 if (nodeptr == NULL || newChild == NULL) {
511 return IXML_INVALID_PARAMETER;
515 return IXML_HIERARCHY_REQUEST_ERR;
519 return IXML_HIERARCHY_REQUEST_ERR;
522 if (nodeptr->ownerDocument != newChild->ownerDocument) {
523 return IXML_WRONG_DOCUMENT_ERR;
527 return IXML_NOT_FOUND_ERR;
530 if (refChild != NULL) {
533 newChild->nextSibling = NULL;
534 newChild->prevSibling = NULL;
536 newChild->nextSibling = refChild;
537 if (refChild->prevSibling != NULL) {
538 refChild->prevSibling->nextSibling = newChild;
539 newChild->prevSibling = refChild->prevSibling;
541 refChild->prevSibling = newChild;
542 if (newChild->prevSibling == NULL) {
543 nodeptr->firstChild = newChild;
545 newChild->parentNode = nodeptr;
555 int ret = IXML_SUCCESS;
557 if (nodeptr == NULL || newChild == NULL || oldChild == NULL) {
558 return IXML_INVALID_PARAMETER;
564 return IXML_HIERARCHY_REQUEST_ERR;
568 return IXML_HIERARCHY_REQUEST_ERR;
571 if (nodeptr->ownerDocument != newChild->ownerDocument) {
572 return IXML_WRONG_DOCUMENT_ERR;
576 return IXML_NOT_FOUND_ERR;
580 if (ret != IXML_SUCCESS) {
590 if (!nodeptr || !oldChild)
591 return IXML_INVALID_PARAMETER;
593 return IXML_NOT_FOUND_ERR;
594 if (oldChild->prevSibling)
595 oldChild->prevSibling->nextSibling = oldChild->nextSibling;
596 if (nodeptr->firstChild == oldChild)
597 nodeptr->firstChild = oldChild->nextSibling;
598 if (oldChild->nextSibling)
599 oldChild->nextSibling->prevSibling = oldChild->prevSibling;
600 oldChild->nextSibling = NULL;
601 oldChild->prevSibling = NULL;
602 oldChild->parentNode = NULL;
604 *returnNode = oldChild;
615 if (nodeptr == NULL || newChild == NULL) {
616 return IXML_INVALID_PARAMETER;
619 if (newChild->ownerDocument != NULL &&
620 nodeptr->ownerDocument != newChild->ownerDocument) {
621 return IXML_WRONG_DOCUMENT_ERR;
625 return IXML_HIERARCHY_REQUEST_ERR;
629 return IXML_HIERARCHY_REQUEST_ERR;
636 newChild->parentNode = nodeptr;
637 newChild->ownerDocument = nodeptr->ownerDocument;
640 if (nodeptr->firstChild == NULL) {
641 nodeptr->firstChild = newChild;
643 prev = nodeptr->firstChild;
644 next = prev->nextSibling;
645 while (next != NULL) {
647 next = prev->nextSibling;
649 prev->nextSibling = newChild;
650 newChild->prevSibling = prev;
667 assert(nodeptr != NULL);
670 if (newNode == NULL) {
675 if (rc != IXML_SUCCESS) {
680 if (rc != IXML_SUCCESS) {
684 newNode->nodeType = eTEXT_NODE;
703 assert(nodeptr != NULL);
705 if (newCDATA != NULL) {
710 if (rc != IXML_SUCCESS) {
715 if (rc != IXML_SUCCESS) {
719 newNode->nodeType = eCDATA_SECTION_NODE;
738 assert(nodeptr != NULL);
741 if (newElement == NULL) {
747 if (rc != IXML_SUCCESS) {
755 if (rc != IXML_SUCCESS) {
761 if (rc != IXML_SUCCESS) {
767 if (rc != IXML_SUCCESS) {
773 if (rc != IXML_SUCCESS) {
779 if (rc != IXML_SUCCESS) {
784 elementNode->nodeType = eELEMENT_NODE;
808 if (rc != IXML_SUCCESS) {
812 newDoc->n.nodeType = eDOCUMENT_NODE;
830 assert(nodeptr != NULL);
833 if (newAttr == NULL) {
842 if (rc != IXML_SUCCESS) {
848 if (rc != IXML_SUCCESS) {
856 if (rc != IXML_SUCCESS) {
862 if (rc != IXML_SUCCESS) {
868 if (rc != IXML_SUCCESS) {
873 attrNode->nodeType = eATTRIBUTE_NODE;
888 assert(nodeptr != NULL);
891 if (newAttr != NULL) {
892 newAttr->specified = 1;
904 IXML_Node* parentNode = nodeptr->parentNode;
905 IXML_Node* nextptr = nodeptr->nextSibling;
907 while (nextptr != NULL) {
908 nextptr->parentNode = parentNode;
909 nextptr = nextptr->nextSibling;
930 if (nodeptr != NULL) {
931 switch (nodeptr->nodeType) {
934 if (newElement == NULL)
936 newElement->n.firstAttr =
939 newElement->n.firstChild =
941 if (newElement->n.firstChild != NULL) {
942 newElement->n.firstChild->parentNode =
948 newElement->n.nextSibling = nextSib;
949 if (nextSib != NULL) {
950 nextSib->prevSibling = (
IXML_Node*)newElement;
956 case eATTRIBUTE_NODE:
962 newAttr->n.nextSibling = nextSib;
963 if (nextSib != NULL) {
964 nextSib->prevSibling = (
IXML_Node*)newAttr;
973 case eCDATA_SECTION_NODE:
984 newNode->firstChild =
986 if (newNode->firstChild != NULL) {
987 newNode->firstChild->parentNode = newNode;
993 case eENTITY_REFERENCE_NODE:
995 case ePROCESSING_INSTRUCTION_NODE:
997 case eDOCUMENT_TYPE_NODE:
998 case eDOCUMENT_FRAGMENT_NODE:
1021 assert(nodeptr != NULL);
1023 switch (nodeptr->nodeType) {
1026 if (newElement == NULL)
1028 newElement->n.firstAttr =
1031 newElement->n.firstChild =
1033 childNode = newElement->n.firstChild;
1034 while (childNode != NULL) {
1035 childNode->parentNode = (
IXML_Node*)newElement;
1036 childNode = childNode->nextSibling;
1038 newElement->n.nextSibling = NULL;
1043 case eATTRIBUTE_NODE:
1045 case eCDATA_SECTION_NODE:
1046 case eDOCUMENT_NODE:
1051 case eENTITY_REFERENCE_NODE:
1053 case ePROCESSING_INSTRUCTION_NODE:
1055 case eDOCUMENT_TYPE_NODE:
1056 case eDOCUMENT_FRAGMENT_NODE:
1057 case eNOTATION_NODE:
1061 if (newNode == NULL) {
1069 if (newNode != NULL)
1070 newNode->parentNode = NULL;
1079 if (nodeptr == NULL) {
1083 switch (nodeptr->nodeType) {
1084 case eATTRIBUTE_NODE:
1101 if (nodeptr == NULL) {
1106 if (newNodeList == NULL) {
1111 tempNode = nodeptr->firstChild;
1112 while (tempNode != NULL) {
1114 if (rc != IXML_SUCCESS) {
1119 tempNode = tempNode->nextSibling;
1130 if (nodeptr == NULL) {
1134 switch (nodeptr->nodeType) {
1136 returnNamedNodeMap =
1138 if (returnNamedNodeMap == NULL) {
1143 tempNode = nodeptr->firstAttr;
1144 while (tempNode != NULL) {
1147 if (rc != IXML_SUCCESS) {
1152 tempNode = tempNode->nextSibling;
1154 return returnNamedNodeMap;
1162 if (nodeptr == NULL) {
1166 return nodeptr->firstChild != NULL;
1170 if (nodeptr != NULL) {
1171 switch (nodeptr->nodeType) {
1173 if (nodeptr->firstAttr != NULL)
1192 const char* tagname,
1200 if (strcmp(tagname, name) == 0 || strcmp(tagname,
"*") == 0) {
1215 assert(n != NULL && tagname != NULL);
1219 if (strcmp(tagname, name) == 0 || strcmp(tagname,
"*") == 0) {
1234 const char* namespaceURI,
1236 const char* localName,
1247 if (name != NULL && nsURI != NULL &&
1248 (strcmp(namespaceURI, nsURI) == 0 ||
1249 strcmp(namespaceURI,
"*") == 0) &&
1250 (strcmp(name, localName) == 0 || strcmp(localName,
"*") == 0)) {
1255 namespaceURI, localName, list);
1257 namespaceURI, localName, list);
1262 const char* localName,
1267 assert(n != NULL && namespaceURI != NULL && localName != NULL);
1272 if (name != NULL && nsURI != NULL &&
1273 (strcmp(namespaceURI, nsURI) == 0 ||
1274 strcmp(namespaceURI,
"*") == 0) &&
1275 (strcmp(name, localName) == 0 || strcmp(localName,
"*") == 0)) {
1281 namespaceURI, localName, list);
1285 int rc = IXML_SUCCESS;
1287 assert(node != NULL);
1289 if (node->nodeName != NULL) {
1290 free(node->nodeName);
1291 node->nodeName = NULL;
1294 if (qualifiedName != NULL) {
1296 node->nodeName = strdup(qualifiedName);
1297 if (node->nodeName == NULL) {
1298 return IXML_INSUFFICIENT_MEMORY;
1302 if (rc != IXML_SUCCESS) {
1303 free(node->nodeName);
1313 assert(destNode != NULL && src != NULL);
1314 if (destNode == NULL || src == NULL) {
1315 return IXML_INVALID_PARAMETER;
1319 if (rc != IXML_SUCCESS) {
1324 if (rc != IXML_SUCCESS) {
1329 if (rc != IXML_SUCCESS) {
1333 destNode->nodeType = src->nodeType;
1335 return IXML_SUCCESS;
1338 if (destNode->nodeName != NULL) {
1339 free(destNode->nodeName);
1340 destNode->nodeName = NULL;
1342 if (destNode->nodeValue != NULL) {
1343 free(destNode->nodeValue);
1344 destNode->nodeValue = NULL;
1346 if (destNode->localName != NULL) {
1347 free(destNode->localName);
1348 destNode->localName = NULL;
1351 return IXML_INSUFFICIENT_MEMORY;
1354#ifdef IXML_HAVE_SCRIPTSUPPORT
1355void ixmlNode_setCTag(
IXML_Node* nodeptr,
void* ctag) {
1356 if (nodeptr != NULL)
1357 nodeptr->ctag = ctag;
1360void* ixmlNode_getCTag(
IXML_Node* nodeptr) {
1361 if (nodeptr != NULL)
1362 return nodeptr->ctag;
Data structure representing a CDATA section node.
Data structure common to all types of nodes.
Data structure representing an Attribute node.
Data structure representing a list of nodes.
Data structure representing a list of named nodes.
Data structure representing an Element node.
Data structure representing the DOM Document.
IXML_Document * ixmlNode_getOwnerDocument(IXML_Node *nodeptr)
Retrieves the document object associated with this Node.
unsigned short ixmlNode_getNodeType(IXML_Node *nodeptr)
Retrieves the type of a Node. Note that not all possible return values are actually implemented.
int ixmlNode_appendChild(IXML_Node *nodeptr, IXML_Node *newChild)
Appends a child Node to the list of children of a Node.
int ixmlNode_setNodeValue(IXML_Node *nodeptr, const char *newNodeValue)
Assigns a new value to a Node.
int ixmlNode_replaceChild(IXML_Node *nodeptr, IXML_Node *newChild, IXML_Node *oldChild, IXML_Node **returnNode)
Replaces an existing child Node with a new child Node in the list of children of a Node.
PUPNP_Api void ixmlAttr_free(IXML_Attr *attrNode)
Frees an Attr node.
void ixmlCDATASection_init(IXML_CDATASection *nodeptr)
Initializes a CDATASection node.
int ixmlNode_removeChild(IXML_Node *nodeptr, IXML_Node *oldChild, IXML_Node **returnNode)
Removes a child from the list of children of a Node.
#define DOMString
The type of DOM strings.
void ixmlNode_free(IXML_Node *nodeptr)
Frees a Node and all Nodes in its subtree.
void ixmlCDATASection_free(IXML_CDATASection *nodeptr)
Frees a CDATASection node.
IXML_Node * ixmlNode_cloneNode(IXML_Node *nodeptr, int deep)
Clones a Node.
IXML_Node * ixmlNode_getNextSibling(IXML_Node *nodeptr)
Retrieves the sibling Node immediately following this Node.
PUPNP_Api void ixmlElement_init(IXML_Element *element)
Initializes a IXML_Element node.
const DOMString ixmlNode_getNodeValue(IXML_Node *nodeptr)
Returns the value of the Node as a string.
const DOMString ixmlNode_getNodeName(IXML_Node *nodeptr)
Returns the name of the Node, depending on what type of Node it is, in a read-only string.
IXML_Node * ixmlNode_getParentNode(IXML_Node *nodeptr)
Retrieves the parent Node for a Node.
PUPNP_Api void ixmlDocument_init(IXML_Document *nodeptr)
Initializes a Document node.
const DOMString ixmlNode_getLocalName(IXML_Node *nodeptr)
Retrieves the local name of a Node, if present.
IXML_NodeList * ixmlNode_getChildNodes(IXML_Node *nodeptr)
Retrieves the list of children of a Node in a NodeList structure.
int ixmlNode_insertBefore(IXML_Node *nodeptr, IXML_Node *newChild, IXML_Node *refChild)
Inserts a new child Node before the existing child Node.
IXML_Node * ixmlNode_getLastChild(IXML_Node *nodeptr)
Retrieves the last child Node of a Node.
const DOMString ixmlNode_getPrefix(IXML_Node *nodeptr)
Retrieves the namespace prefix, if present.
PUPNP_Api void ixmlNodeList_free(IXML_NodeList *nList)
Frees a NodeList object.
int ixmlNode_hasAttributes(IXML_Node *nodeptr)
Queries whether this Node has attributes.
IXML_Node * ixmlNode_getPreviousSibling(IXML_Node *nodeptr)
Retrieves the sibling Node immediately preceding this Node.
PUPNP_Api void ixmlElement_free(IXML_Element *element)
Frees the given Element and any subtree of the Element.
#define DOCUMENTNODENAME
The type of the DOM node.
const DOMString ixmlNode_getNamespaceURI(IXML_Node *nodeptr)
Retrieves the namespace URI for a Node as a DOMString.
IXML_Node * ixmlNode_getFirstChild(IXML_Node *nodeptr)
Retrieves the first child Node of a Node.
IXML_NamedNodeMap * ixmlNode_getAttributes(IXML_Node *nodeptr)
Retrieves the attributes of a Node, if it is an Element node, in a NamedNodeMap structure.
PUPNP_Api void ixmlNamedNodeMap_free(IXML_NamedNodeMap *nnMap)
Frees a NamedNodeMap.
int ixmlNode_hasChildNodes(IXML_Node *nodeptr)
Queries whether or not a Node has children.
PUPNP_Api void ixmlDocument_free(IXML_Document *doc)
Frees a Document object and all Nodes associated with it.
int ixmlNodeList_addToNodeList(IXML_NodeList **nList, IXML_Node *add)
Add a node to nodelist.
void ixmlNamedNodeMap_init(IXML_NamedNodeMap *nnMap)
Initializes a NamedNodeMap object.
void ixmlNodeList_init(IXML_NodeList *nList)
Initializes a nodelist.
int ixmlElement_setTagName(IXML_Element *element, const char *tagName)
Set the given element's tagName.
void ixmlAttr_init(IXML_Attr *attrNode)
ixmlAttr_init
int Parser_setNodePrefixAndLocalName(IXML_Node *newIXML_NodeIXML_Attr)
Set the node prefix and localName as defined by the nodeName in the form of ns:name.
int ixmlNamedNodeMap_addToNamedNodeMap(IXML_NamedNodeMap **nnMap, IXML_Node *add)
Add a node to a NamedNodeMap.
static void ixmlNode_setSiblingNodesParent(IXML_Node *nodeptr)
Sets siblings nodes parent to be the same as this node's.
static int ixmlNode_setPrefix(IXML_Node *nodeptr, const char *prefix)
Set the prefix of the node.
static int ixmlNode_allowChildren(IXML_Node *nodeptr, IXML_Node *newChild)
Check to see whether nodeptr allows children of type newChild.
static IXML_CDATASection * ixmlNode_cloneCDATASect(IXML_CDATASection *nodeptr)
Return a clone of CDATASection node.
int ixmlNode_setNodeProperties(IXML_Node *destNode, IXML_Node *src)
static IXML_Node * ixmlNode_cloneTextNode(IXML_Node *nodeptr)
Returns a clone of nodeptr.
static void ixmlNode_freeSingleNode(IXML_Node *nodeptr)
Frees a node content.
static int ixmlNode_isAncestor(IXML_Node *ancestorNode, IXML_Node *toFind)
Check if ancestorNode is ancestor of toFind.
static IXML_Node * ixmlNode_cloneNodeTree(IXML_Node *nodeptr, int deep)
Function that clones a node tree of nodeptr.
int ixmlNode_compare(IXML_Node *srcNode, IXML_Node *destNode)
Compare two nodes to see whether they are the same node. Parent, sibling and children node are ignore...
static int ixmlNode_setNamespaceURI(IXML_Node *nodeptr, const char *namespaceURI)
Sets the namespace URI of the node.
static IXML_Attr * ixmlNode_cloneAttrDirect(IXML_Attr *nodeptr)
Return a clone of attribute node, with specified field set to 1.
static IXML_Document * ixmlNode_newDoc(void)
Returns a new document node.
static void ixmlNode_getElementsByTagNameNSRecursive(IXML_Node *n, const char *namespaceURI, const char *localName, IXML_NodeList **list)
ixmlNode_getElementsByTagNameNSRecursive
void ixmlNode_getElementsByTagName(IXML_Node *n, const char *tagname, IXML_NodeList **list)
Returns a nodeList of all descendant Elements with a given tagName, in the order in which they are en...
static IXML_Node * ixmlNode_cloneNodeTreeRecursive(IXML_Node *nodeptr, int deep)
Recursive function that clones a node tree of nodeptr.
static void ixmlNode_getElementsByTagNameRecursive(IXML_Node *n, const char *tagname, IXML_NodeList **list)
Recursively traverse the whole tree, search for element with the given tagname.
void ixmlNode_init(IXML_Node *nodeptr)
Intializes a node.
int ixmlNode_setNodeName(IXML_Node *node, const DOMString qualifiedName)
static int ixmlNode_isParent(IXML_Node *nodeptr, IXML_Node *toFind)
Check whether toFind is a children of nodeptr.
static IXML_Element * ixmlNode_cloneElement(IXML_Element *nodeptr)
Returns a clone of element node.
static IXML_Attr * ixmlNode_cloneAttr(IXML_Attr *nodeptr)
Returns a clone of an attribute node.
static int ixmlNode_setLocalName(IXML_Node *nodeptr, const char *localName)
Set the localName of the node.
void ixmlNode_getElementsByTagNameNS(IXML_Node *n, const char *namespaceURI, const char *localName, IXML_NodeList **list)
Returns a nodeList of all the descendant Elements with a given local name and namespace URI in the or...