Re: [xml] patch: xmlTextReaderGetAttribute and xmlns support
- From: Rob Richards <rrichards ctindustries net>
- To: veillard redhat com
- Cc: "xml gnome org" <xml gnome org>
- Subject: Re: [xml] patch: xmlTextReaderGetAttribute and xmlns support
- Date: Sat, 20 Aug 2005 11:17:08 -0400
Daniel Veillard wrote:
On Tue, Aug 16, 2005 at 05:55:32PM -0400, Rob Richards wrote:
Nope that one is fine. Havent implemented the xxAttributeNS functions yet.
okidoc, applied and commited,
Here's the patch for xmlTextReaderGetAttributeNs and
xmlTextReaderMoveToAttributeNs
Rob
Index: xmlreader.c
===================================================================
RCS file: /cvs/gnome/gnome-xml/xmlreader.c,v
retrieving revision 1.125
diff -c -r1.125 xmlreader.c
*** xmlreader.c 17 Aug 2005 07:07:44 -0000 1.125
--- xmlreader.c 20 Aug 2005 15:07:32 -0000
***************
*** 2365,2370 ****
--- 2365,2373 ----
xmlChar *
xmlTextReaderGetAttributeNs(xmlTextReaderPtr reader, const xmlChar *localName,
const xmlChar *namespaceURI) {
+ xmlChar *prefix = NULL;
+ xmlNsPtr ns;
+
if ((reader == NULL) || (localName == NULL))
return(NULL);
if (reader->node == NULL)
***************
*** 2376,2381 ****
--- 2379,2399 ----
if (reader->node->type != XML_ELEMENT_NODE)
return(NULL);
+ if (xmlStrEqual(namespaceURI, BAD_CAST "http://www.w3.org/2000/xmlns/")) {
+ if (! xmlStrEqual(localName, BAD_CAST "xmlns")) {
+ prefix = BAD_CAST localName;
+ }
+ ns = reader->node->nsDef;
+ while (ns != NULL) {
+ if ((prefix == NULL && ns->prefix == NULL) ||
+ ((ns->prefix != NULL) && (xmlStrEqual(ns->prefix, localName)))) {
+ return xmlStrdup(ns->href);
+ }
+ ns = ns->next;
+ }
+ return NULL;
+ }
+
return(xmlGetNsProp(reader->node, localName, namespaceURI));
}
***************
*** 2626,2631 ****
--- 2644,2651 ----
const xmlChar *localName, const xmlChar *namespaceURI) {
xmlAttrPtr prop;
xmlNodePtr node;
+ xmlNsPtr ns;
+ xmlChar *prefix = NULL;
if ((reader == NULL) || (localName == NULL) || (namespaceURI == NULL))
return(-1);
***************
*** 2635,2644 ****
return(0);
node = reader->node;
! /*
! * A priori reading http://www.w3.org/TR/REC-xml-names/ there is no
! * namespace name associated to "xmlns"
! */
prop = node->properties;
while (prop != NULL) {
/*
--- 2655,2676 ----
return(0);
node = reader->node;
! if (xmlStrEqual(namespaceURI, BAD_CAST "http://www.w3.org/2000/xmlns/")) {
! if (! xmlStrEqual(localName, BAD_CAST "xmlns")) {
! prefix = BAD_CAST localName;
! }
! ns = reader->node->nsDef;
! while (ns != NULL) {
! if ((prefix == NULL && ns->prefix == NULL) ||
! ((ns->prefix != NULL) && (xmlStrEqual(ns->prefix, localName)))) {
! reader->curnode = (xmlNodePtr) ns;
! return(1);
! }
! ns = ns->next;
! }
! return(0);
! }
!
prop = node->properties;
while (prop != NULL) {
/*
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]