I can extract the namespace and the root element name via reflection from my JAXBPacketExtension.
The PacketExtension interface defines the getNamepsace() and getElementName() methods. So there is no need to use reflection.
I *think* that if you replace PacketExtension in your code from your original post, with IQChildElementxmlStringBuilder and manage to somehow maintain the element name and namespace information to call IQ constructor correctly, then it should work.
I don't have an overview of how your environment looks like. And I believe that this is best discussed in a realtime fashion, instead of using the forums. They are great for reports, like your pubsub namespace bug report, but non-trivial design decisions are better solved in MUC/IRC (of course, this requires some will to idle around, since we often may not be available at the same time).