I have a tool that is used for cleaning up crappy HTML in order to make sense of the underlying structure. Having stripped class, style attributes and various Angular attributes, often the resulting markup is a series of nested <div> or <span> elements that have no attributes. What I would like to do is provide option to do a second pass where a <div> or <span> with no attributes can be removed, to flatten the structure more.
Is there a way in JavaScript to confirm that an HTML element has no attributes of any kind?
And if that is possible, how might I approach this stripping of an element?
For example, assuming I have this:
<div>
 <div>
  <div id="blah">
   <div>
    <div>
     <span dir="auto">
      <span>Joe Bloggs</span>
     </span>
    </div>
   </div>
  </div>
 </div>
</div>
That should end up as:
  <div id="blah">
     <span dir="auto">
      Joe Bloggs
     </span>
  </div>
Which I would then format to:
<div id="blah">
 <span dir="auto">
  Joe Bloggs
 </span>
</div>
So I'd need a function that can walk the DOM and remove a div (or span) that has no attributes while leaving the inner contents intact (unless of course any of those inner elements can also be stripped for same reason).
Any pointers before I go ahead and construct a shoddy (but working) script would be appreciated!