I am trying to add a default namespace to a root element that is in a different namespace but XOM doesn’t like this!
e.g
<env:contentEnvelope
xmlns:env="http://data.com/Envelope/2008-05-01/"
xmlns:inv="http://Patents.data.com/2012-01-01/"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
I want the inv namespace to also be the default namespace by adding
e.g.
xmlns="http://Patents.data.com/2012-01-01/"
but XOM won’t have it!
Any ideas on how to do this?
It was a combination of things that stopped me from adding a default namespace.
The solution as with most things in IT is straight forward but not easy getting there:
The key here is using the .addNamespaceDeclaration(“”, namespace) with the first param set to “” this is not intuitive I was using .setNamespace() which doesn’t work.
Also I didn’t realise that creating an element using:
automatically creates a namespace xmlns:env in the root element; I was explicitly doing this again; this doesn’t cause an issue but if you use .addNamespaceDeclaration(“”, namespace) after this it doesn’t work.
The line with ** is all you need:
Oh yes, I didn’t need the inv namespace as this is the same as the default namespace!
Cheers 🙂