When calling getFirstChildWithName operation over an element, it reads not only the first element, but the next also. I think that could be improved since the operation name semantics specifies that the caller is only interested in the first element and not the rest of them, so a iterator (the reason to read the next element) is useless here. Suppose the following scenario.
– very big content –
I want to read the sub-child-element only in some cases depending on the 'value' attribute. If I call to getFirstElement I get the behaviour I want, since only the header is readed and I can skip and discard the message if it doesn't match. I get the behaviour that I would expect from a StaX parser and a getFirst* method, so I can discard the message quickly. Instead, getFirstElementWithName seems to call internally to getElementsWithName and returns the first occurence, which forces the parser to read the next element and (in this case) the complete big message.
I think that the efficiency of that method could be improved since, for a StaX model, one expects that the parser only reads the minimal information needed to serve the request. Instead of calling to getElementsWithName, it would be better an implementation based on getFirstElement and then going through getNextOMSibling.