More DOM Jan 14 2019 Manipulating DOM trees DOM unlike SAX gives you the ability to create and modify XML trees There are a few roadblocks along the way Practically everything in the JAXP implementation is an interface with a few abstract classes Interfaces such as Node don t have constructors this makes it hard to get started Since DOM was designed to be applicable from a number of languages many things are not done the Java way Once you get past these problems the individual methods are pretty straightforward Even with straightforward methods working with trees is seldom simple Overview There are three basic kinds of operations Creating a new DOM Modifying the structure of a DOM Modifying the content of a DOM Creating a new DOM requires a few extra methods just to get started Afterwards you can grow the DOM by modifying its structure and content Creating a DOM import javax xml parsers import org w3c dom Document try DocumentBuilderFactory factory DocumentBuilderFactory newInstance DocumentBuilder builder factory newDocumentBuilder Document doc builder newDocument catch ParserConfigurationException e The rest of the methods Most of the other methods are either instance methods of a Document object or are inherited from Node A few are from Attr Text Entity and so on Almost all of these methods may throw a DOMException I ll just go through some of the more important methods briefly The details can be looked up in the API if needed Creating structure The following are instance methods of Document public Element createElement String tagName public Element createElementNS String namespaceURI String qualifiedName public Attr createAttribute String name public Attr createAttributeNS String namespaceURI String qualifiedName public ProcessingInstruction createProcessingInstruction String target String data public EntityReference createEntityReference String name The above may all throw a DOMException public Text createTextNode String data public Comment createComment String data Methods inherited from Node public Node appendChild Node newChild public Node insertBefore Node newChild Node refChild public Node removeChild Node oldChild public Node replaceChild Node newChild Node oldChild setNodeValue String nodeValue What this does depends on the type of node public void setPrefix String prefix public void normalize Combines adjacent TextNodes Methods of Element public void setAttribute String name String value public Attr setAttributeNode Attr newAttr public void setAttributeNodeNS String namespaceURI String qualifiedName String value public Attr setAttributeNodeNS Attr newAttr public void removeAttribute String name public void removeAttributeNS String namespaceURI String localName public Attr removeAttributeNode Attr oldAttr Method of Attr public void setValue String value This is the only method that modifies an Attr the rest just get information Writing out the DOM as XML There are no Java supplied methods for writing out a DOM as XML Writing out a DOM is conceptually simple it s just a tree walk However there are a lot of details various node types and so on so doing a good job isn t complicated but it is lengthy The End
View Full Document