IQs now use IQChildElementXmlStringBuilder which is basically an "top element aware" XmlStringBuilder that does not close the top element. This is so that packet extensions can be added before the element is closed. You IQ subclass must also be aware of it's element name and namespace, but this is done via IQs (String, String) constructor. Using your approach of wraping a PacketExtension within a IQ won't work this way, because the IQs element name and namespace must be known statically.
↧