You are viewing a plain text version of this content. The canonical link for it is here.
Posted to c-users@xalan.apache.org by Ashay Shende <as...@cisco.com> on 2003/03/18 09:18:09 UTC

using Xalan to parse an XML document.

Hi,
This is regarding the use of Xalan for parsing an XML document.


The DOM is of type XalanDocument(variable:theDocument)

When I try to create a new element using :
theDocument->createElement(elemName).....elemName is of type XalanDOMString,
the code compiles without any syntax errors.

However, when I run the application, I get an Exception of code=9
(NOT_SUPPORTED_ERR) at the statement: theDocument->createElement(elemName).

**********The Code*********************************************
try
    {
	     XMLPlatformUtils::Initialize();

		XPathEvaluator::initialize();
            {
               // Initialize the XalanSourceTree subsystem...
               XalanSourceTreeInit             theSourceTreeInit;
               // We'll use these to parse the XML file.
               XalanSourceTreeDOMSupport               theDOMSupport;
               XalanSourceTreeParserLiaison    theLiaison(theDOMSupport);

               // Hook the two together...
			theDOMSupport.setParserLiaison(&theLiaison);

               // Create an input source that represents a local file...
              const LocalFileInputSource
theInputSource(c_wstr(XalanDOMString(file_name)));

               // Parse the document...
                 XalanDocument*  theDocument =
theLiaison.parseXMLStream(theInputSource);
                 assert(theDocument != 0);

                 cout << "Before Ceating new Element1" << "\n";

                  XalanDOMString ename(XALAN_STATIC_UCODE_STRING("Elem1"));
                  XalanElement* newElem = theDocument->createElement(ename);

                  cout << "After creating new Element1" << "\n";

		}

	}
	catch(const XalanDOMException& toCatch)
      {
           cout << "Exception:" << toCatch.getExceptionCode() << "\n";
      }

****************************************************************************
*******

The Output:
Before Creating New Element1
Exception:9


This exception is raised "if the implementation does not support the
requested type object or operation."

Could someone give me pointers as to what the code is missing in detail.


Thanks,
Ashay.


RE: using Xalan to parse an XML document.

Posted by Mark Weaver <ma...@npsl.co.uk>.
That's because Xalan's source trees are read only.  If you need to
read/modify a source tree, using a Xerces document is probably the way to
go.  If you just need to build a document, you can use a
FormatterToSourceTree and build with SAX events.

> -----Original Message-----
> From: Ashay Shende [mailto:ashende@cisco.com]
> Sent: 18 March 2003 08:18
> To: xalan-c-users@xml.apache.org
> Subject: using Xalan to parse an XML document.
> Importance: High
>
>
> Hi,
> This is regarding the use of Xalan for parsing an XML document.
>
>
> The DOM is of type XalanDocument(variable:theDocument)
>
> When I try to create a new element using :
> theDocument->createElement(elemName).....elemName is of type
> XalanDOMString,
> the code compiles without any syntax errors.
>
> However, when I run the application, I get an Exception of code=9
> (NOT_SUPPORTED_ERR) at the statement:
> theDocument->createElement(elemName).
>
> **********The Code*********************************************
> try
>     {
> 	     XMLPlatformUtils::Initialize();
>
> 		XPathEvaluator::initialize();
>             {
>                // Initialize the XalanSourceTree subsystem...
>                XalanSourceTreeInit             theSourceTreeInit;
>                // We'll use these to parse the XML file.
>                XalanSourceTreeDOMSupport               theDOMSupport;
>                XalanSourceTreeParserLiaison    theLiaison(theDOMSupport);
>
>                // Hook the two together...
> 			theDOMSupport.setParserLiaison(&theLiaison);
>
>                // Create an input source that represents a local file...
>               const LocalFileInputSource
> theInputSource(c_wstr(XalanDOMString(file_name)));
>
>                // Parse the document...
>                  XalanDocument*  theDocument =
> theLiaison.parseXMLStream(theInputSource);
>                  assert(theDocument != 0);
>
>                  cout << "Before Ceating new Element1" << "\n";
>
>                   XalanDOMString
> ename(XALAN_STATIC_UCODE_STRING("Elem1"));
>                   XalanElement* newElem =
> theDocument->createElement(ename);
>
>                   cout << "After creating new Element1" << "\n";
>
> 		}
>
> 	}
> 	catch(const XalanDOMException& toCatch)
>       {
>            cout << "Exception:" << toCatch.getExceptionCode() << "\n";
>       }
>
> ******************************************************************
> **********
> *******
>
> The Output:
> Before Creating New Element1
> Exception:9
>
>
> This exception is raised "if the implementation does not support the
> requested type object or operation."
>
> Could someone give me pointers as to what the code is missing in detail.
>
>
> Thanks,
> Ashay.
>
>
>