title: Best XML parser for Java
body: <p>I need to read smallish (few MB at the most, UTF-8 encoded) XML files, rummage around looking at various elements and attributes, perhaps modify a few and write the XML back out again to disk (preferably with nice, indented formatting).</p>
  
  <p>What would be the best XML parser for my needs?  There are lots to choose from.  Some I'm aware of are:</p>
  
  <ul>
  <li><a href="http://www.jdom.org/" rel="noreferrer">JDOM</a></li>
  <li><a href="http://wiki.fasterxml.com/WoodstoxHome" rel="noreferrer">Woodstox</a></li>
  <li><a href="http://xom.nu/" rel="noreferrer">XOM</a></li>
  <li><a href="http://dom4j.sourceforge.net/" rel="noreferrer">dom4j</a></li>
  <li><a href="http://vtd-xml.sourceforge.net/" rel="noreferrer">VTD-XML</a></li>
  <li><a href="http://xerces.apache.org/xerces-j/" rel="noreferrer">Xerces-J</a></li>
  <li><a href="http://xml.apache.org/crimson/" rel="noreferrer">Crimson</a></li>
  </ul>
  
  <p>And of course the one in the JDK (I'm using Java 6).  I'm familiar with Xerces but find it clunky.</p>
  
  <p>Recommendations?</p>