96 {
97 XMLCh* xmlchEltName = XMLString::transcode( eltName );
98 XMLCh* xmlchName = XMLString::transcode( "name" );
99 XMLCh* xmlchValue = XMLString::transcode( "value" );
100 XMLCh* xmlchModified = XMLString::transcode( "modified" );
101 if ( !doc )
102 {
103 std::cerr << "invalid document " << std::endl;
104 return;
105 }
106
107
108 DOMNodeList* constList = doc->getElementsByTagName( xmlchEltName );
109 unsigned int nElt = constList->getLength();
110 for ( unsigned int iElt = 0; iElt < nElt; iElt++ )
111 {
112 try
113 {
114 bool mismatch = false;
115 DOMNode* item = constList->item( iElt );
116 DOMElement* itemElt = dynamic_cast<DOMElement*>( item );
117 DOMElement* byIdElt;
118 std::cout << std::endl
119 << eltName << " #" << iElt << " Address as node: " << item
120 << " and as element: " << itemElt << std::endl;
121 const XMLCh* xmlchNamevalue = itemElt->getAttribute( xmlchName );
122 if ( XMLString::stringLen( xmlchNamevalue ) > 0 )
123 {
124 char* namevalue = XMLString::transcode( xmlchNamevalue );
125 std::cout << "element has name " << namevalue << std::endl;
126 byIdElt = doc->getElementById( xmlchNamevalue );
127 std::cout << "Address from getElementById: " << byIdElt << std::endl;
128 if ( byIdElt != itemElt )
129 {
130 mismatch = true;
131 std::cout << "**** Address mismatch " << std::endl << std::endl;
132 }
133 XMLString::release( &namevalue );
134 }
135 std::cout << "Modifying value attribute using DOM_Element address" << std::endl;
136 itemElt->setAttribute( xmlchValue, xmlchModified );
137 if ( mismatch )
138 {
139 std::cout << "Modifying value attribute using looked-up address" << std::endl;
140 byIdElt->setAttribute( xmlchValue, xmlchModified );
141 }
142 } catch ( DOMException ex )
143 {
144 int code = ex.code;
145 std::cout << "***** Processing failed for element #" << iElt
146 << " with DOMException, code = " << code << std::endl
147 << std::endl;
148 }
149 }
150}