If you create an element and append it to another element in the
document, the new element is part of the document and will be serialized
along with the rest of the document.  If it has children, they will be
serialized between separate start and end tags.  If it has no children,
you'll get an empty-element tag.

An element is empty because it has no children, not because it has a
child element with an empty name.  As Alberto pointed out, an element
must have a name.

-----Original Message-----
From: Piras Sandro (KSDB 121) [mailto:[EMAIL PROTECTED] 
Sent: Wednesday, May 28, 2008 2:22 AM
To: [email protected]
Subject: RE: Crash in DOM_Document::createElement() when name an empty
string

Hi Alberto,
the code is in a try block and I catch the exceptions. So far as I can
see XMLChar1_0::isValidName() doesn't throw an exception and the crash
happens there.

When avoiding to call createElement() with name empty, would I have the
empty-element tag like before (according to the code)?

Regards
Sandro



-----Original Message-----
From: Alberto Massari [mailto:[EMAIL PROTECTED] 
Sent: Dienstag, 27. Mai 2008 16:05
To: [email protected]
Subject: Re: Crash in DOM_Document::createElement() when name an empty
string

Hi Sandro,
elements must have a name, so you should not be allowed to create one
with an empty string (and probably the application crashes because it
doesn't catch the exception being thrown). Add a check and avoid the
call to createElement when "name" is empty

Alberto

Piras Sandro (KSDB 121) wrote:
> Hi all,
> I'm trying to "migrate" some old C++ Code from Xerces 1.7.0 to Xerces 
> 2.5.0 using the includes from the directory /dom/deprecated instead of

> using the new classes. Now the application crashes.
>
> Here the code:
>
> DOM_Document domDoc;
> DOM_Node parent;
>
> ...
>
> // parent created, the path is "CMF/Trade/Product/Identifiers"
>
> DOM_Element element = domDoc.createElement(name); // name may be empty
> -> name = ""
> DOM_Text text = domDoc.createTextNode(value); // value may be empty ->

> value = ""
> element.appendChild(text);
> parent.appendChild(element);
>
>
> When the variables name and value were an empty string, on xerces 
> 1.7.0 we got an empty-element tag:
>
> ...<Product><Identifiers/></Product>..
>
> but on xerces 2.5.0 the method DOM_Document::createElement() crashes 
> because of XMLChar1_0::isValidName()
>
> DOM_Document::createElement() -> DocumentImpl::createElement() ->
> XMLChar1_0::isValidName()
>
> I couldn't find anything about this in the migration specs or in the 
> faq.
>
> May somebody tell me if it is not allowed anymore to call
> createElement() with an empty string and if not allowed, how to 
> generate the empty-element tag?
>
> Regards
> S. Piras
>
>   

Reply via email to