How to remove an specific xml attribute from org.w3c.dom.Document

I have this XML:

<Body xmlns:wsu="http://mynamespace">           
 <Ticket xmlns="http://othernamespace">
  <Customer xlmns="">Robert</Customer>
  <Products xmlns="">
   <Product>a product</>
  </Products>               
 </Ticket>
 <Delivered xmlns="" />
 <Payment xlmns="">cash</Payment>
</Body>

I am using Java to read it as a DOM document. I want remove the empty namespace attributes (i.e., xmlns=""). Is there any way to do that?

Jon Skeet
people
quotationmark

You need to understand that xmlns is a very special attribute. Basically, the xmlns="" is so that your Customer element is in the "unnamed" namespace, rather than the http://othernamespace namespace (and likewise for other elements which would otherwise inherit a default namespace from their ancestors).

If you want to get rid of the xmlns="", you basically need to put the elements into the appropriate namespace - so it's changing the element name. I don't think the W3C API lets you change the name of an element - you may well need to create a new element with the appropriate namespaced-name, and copy the content. Or if you're responsible for creating the document to start with, just use the right namespace.

people

See more on this question at Stackoverflow