The contents of this page were extracted from the source file for Chapter 21 by a quick and dirty Microsoft Word VBScript macro. The formatting isn't great, and it may not be complete.
The <h2>
level headings give the current interface, the <h3>
level headings give the current attribute or method. By searching for the attribute or method you want
you should be able to find the sample code in question.
Once again, sorry about the quality of the file, but if it came down to getting your hands on the code in electronic (but imperfect) form, or not getting the code at all, I assume you prefer the latter.
If you want more information on how I extracted this stuff, or would like to volunteer to clean this file up a little bit (I can dream, can't I :-), please feel free to email me.
W. Scott Means, January 28, 2001
Attr attrName = elem.getAttributeNode("size");
String getName(); Attr attr; for (int i = 0; i < elem.getAttributes().getLength(); i++) { // temporarily alias the attribute attr = (Attr)elem.getAttributes().item(i); System.out.println(attr.getName()); }
Element getOwnerElement();
boolean getSpecified(); for (int i = 0; i < elem.getAttributes().getLength(); i++) { // temporarily alias the attribute attr = (Attr)elem.getAttributes().item(i); // only show attributes that were explicitly included in the XML source file // (i.e. ignore default attributes from the DTD.) if (attr.getSpecified()) { System.out.println(attr.getName()); } } String getValue(); public void setValue(String value); Attr attr; for (int i = 0; i < elem.getAttributes().getLength(); i++) { attr = (Attr)elem.getAttributes().item(i); attr.setValue(attr.getValue().toLowerCase()); } try { FileInputStream fis = new FileInputStream("phone_list.xml"); StringBuffer sb = new StringBuffer(); // read the XML source file into memory int ch; while ((ch = fis.read()) != -1) { sb.append((char)ch); } // now, create a CDATASection object to contain it within // an element of our document using the CDATA facility CDATASection ndCDATA = doc.createCDATASection(sb.toString()); } catch (IOException e) { ...
Text ndText = doc.createTextNode("The truth is out there."); // cast it to the CharacterData interface CharacterData ndCD = (CharacterData)ndText;
CharacterData ndCD = (CharacterData)doc.createTextNode("Unquoted text."); ... ndCD.setData('\"' + ndCD.getData() + '\"'); String getData() throws DOMException; public void setData(String data) throws DOMException;
unsigned long getLength(); CharacterData ndCD = (CharacterData)doc.createTextNode("This string has 30 characters."); System.out.println("The string \'" + ndCD.getData() + "\' has " + Long.toString(ndCD.getLength()) + " characters.");
public void appendData(String arg) throws DOMException; CharacterData ndCD = (CharacterData)doc.createTextNode("The truth is "); // flip a coin ndCD.appendData((Math.random() < 0.5) ? "out there." : "in here."); System.out.println(ndCD.getData()); public void deleteData(unsigned long offset, unsigned long count) throws DOMException; CharacterData ndCD = (CharacterData)doc.createTextNode("The truth is not out there."); // change of heart ndCD.deleteData(12, 4); System.out.println(ndCD.getData()); public void insertData(unsigned long offset, String arg) throws DOMException; boolean fCynical = true; // create a new Text object, and reference the CharacterData interface CharacterData ndCD = (CharacterData)doc.createTextNode("The truth is out there."); ... // check for cynicism if (fCynical) { ndCD.insertData(12, " not"); } System.out.println(ndCD.getData()); cdNode.deleteData(offset, count); cdNode.insertData(offset, arg); public void replaceData(unsigned long offset, unsigned long count, String arg) throws DOMException; CharacterData ndCD = (CharacterData)doc.createTextNode("The truth is not out there."); // replace the truth String strFind = "truth"; String strReplace = "dog"; ndCD.replaceData(ndCD.getData().indexOf(strFind), strFind.length(), strReplace); System.out.println(ndCD.getData()); public String substringData(unsigned long offset, unsigned long count) throws DOMException; CharacterData ndCD = (CharacterData)doc.createTextNode("The truth is out there."); // we only want the "truth" String strTruth = ndCD.substringData(4, 5); System.out.println("The substring is '" + strTruth + '\''); Comment ndComment = doc.createComment("Document was parsed by DOM utility."); // and add it to the document doc.appendChild(ndComment);
DocumentType getDoctype(); DocumentType docType = docIn.getDoctype(); if (docType == null) { System.out.println("warning: no DTD provided"); } Element getDocumentElement(); Element elRoot = docIn.getDocumentElement(); System.out.println("This is a '" + elRoot.getTagName() + "' document."); DOMImplementation getImplementation(); DOMImplementation di = doc.getImplementation(); if (!di.hasFeature("XML", "1.0")) { return false; }
public Attr createAttribute(String name) throws DOMException; EntityReference er = doc.createEntityReference("name_entity"); // must create an Attribute object to include an explicit // entity reference Attr attr = doc.createAttribute("name"); // append the entity reference attr.appendChild(er); public Attr createAttributeNS(String namespaceURI, String qualifiedName) throws DOMException;
public CDATASection createCDATASection(String data) throws DOMException; CDATASection cds = doc.createCDATASection("This is sample text. "); public Comment createComment(String data); StringBuffer sb = new StringBuffer(); Date dtNow = new Date(); sb.append("\tModified " + dtNow.toString() + '\n'); Comment cmt = doc.createComment(sb.toString()); public DocumentFragment createDocumentFragment();
public Element createElement(String tagName) throws DOMException; Element elOut = doc.createElement("my_tag"); public Element createElementNS(String namespaceURI, String qualifiedName) throws DOMException;
public EntityReference createEntityReference(String name) throws DOMException; EntityReference er = doc.createEntityReference("name_entity"); public ProcessingInstruction createProcessingInstruction(String target, String data) throws DOMException; ProcessingInstruction pi = doc.createProcessingInstruction("my_app", "action=\"save\""); public Text createTextNode(String data); Text txtDesc = doc.createTextNode("Character data contents for a new Element."); public Element getElementById(String elementId);
public NodeList getElementsByTagName(String tagName); NodeList nl = doc.getElementsByTagName("phone_number"); public NodeList getElementsByTagNameNS(String namespaceURI, String localName);
public boolean hasAttribute(String name);
public boolean hasAttributeNS(String namespaceURI, String localName);
public Node importNode(Node importedNode, boolean deep) throws DOMException;
DocumentFragment dfNorm = doc.createDocumentFragment();sample.xml before DocumentFragment copy operationDocumentFragment object on clipboard. sample.xml after DocumentFragment copy operation
// get document type information DocumentType dtDoc = doc.getDoctype();
NamedNodeMap getEntities(); NamedNodeMap nnm = doc.getDoctype().getEntities(); Entity ndEnt; for (int i = 0; i < nnm.getLength(); i++) { ndEnt = (Entity)nnm.item(i); System.out.println(ndEnt.getNodeName()); if (ndEnt.getPublicId() != null) { System.out.println("\tPublic Identifier: " + ndEnt.getPublicId()); } if (ndEnt.getSystemId() != null) { System.out.println("\tSystem Identifier: " + ndEnt.getSystemId()); } if (ndEnt.getNotationName() != null) { System.out.println("\tNotation Name: " + ndEnt.getNotationName()); } } String getInternalSubset();
String getName(); DocumentType dtDoc = doc.getDoctype(); System.out.println("This is a " + dtDoc.getName() + " document."); NamedNodeMap getNotations(); NamedNodeMap nnm = doc.getDoctype().getNotations(); Notation ndNotation; for (int i = 0; i < nnm.getLength(); i++) { ndNotation = (Notation)nnm.item(i); System.out.println(ndNotation.getNodeName()); if (ndNotation.getPublicId() != null) { System.out.println("\tPublic Identifier: " + ndNotation.getPublicId()); } if (ndNotation.getSystemId() != null) { System.out.println("\tSystem Identifier: " + ndNotation.getSystemId()); } } String getPublicId();
String getSystemId();
public static final short INDEX_SIZE_ERR = 1;
public static final short DOMSTRING_SIZE_ERR = 2;
public static final short HIERARCHY_REQUEST_ERR = 3;
public static final short WRONG_DOCUMENT_ERR = 4;
public static final short INVALID_CHARACTER_ERR = 5;
public static final short NO_DATA_ALLOWED_ERR = 6;
public static final short NO_MODIFICATION_ALLOWED_ERR = 7;
public static final short NOT_FOUND_ERR = 8;
public static final short NOT_SUPPORTED_ERR = 9;
public static final short INUSE_ATTRIBUTE_ERR = 10;
public static final short INVALID_ACCESS_ERR = 15;
public static final short INVALID_MODIFICATION_ERR = 13;
public static final short INVALID_STATE_ERR = 11;
public static final short NAMESPACE_ERR = 14;
public static final short SYNTAX_ERR = 12;
import com.w3c.dom.DOMImplementation; ... DOMImplementation di = doc.getImplementation(); // make sure that DOM Level 1 XML is supported if (!di.hasFeature("XML", "1.0")) { return null; }
public Document createDocument(String namespaceURI, String qualifiedName, DocumentType doctype) throws DOMException;
public DocumentType createDocumentType(String qualifiedName, String publicId, String systemId) throws DOMException;
public boolean hasFeature(String feature, String version); if (!di.hasFeature("XML", "1.0")) { return null; }
Element elem = doc.getDocumentElement();
String getTagName(); // show the name of the root element tag Element elem = doc.getDocumentElement(); System.out.println("This is a " + elem.getTagName() + " document.");
public String getAttribute(String name); Element elem = doc.getDocumentElement(); Java example: if (elem.getAttribute("name") == "") { System.out.println("warning: " + elem.getTagName() + " element: no name attribute"); } public String getAttributeNS(String namespaceURI, String localName);
public Attr getAttributeNode(String name); Attr attr; if ((attr = elem.getAttributeNode("id")) == null) { System.out.println("warning: element " + elem.getTagName() + ": no id attribute provided."); } public Attr getAttributeNodeNS(String namespaceURI, String localName);
public NodeList getElementsByTagName(String name); Element elem = doc.getDocumentElement(); NodeList nlAddrs = elem.getElementsByTagName("address"); public NodeList getElementsByTagNameNS(String namespaceURI, String localName);
public boolean hasAttribute(String name);
public boolean hasAttribute(String namespaceURI, String localName);
This text is broken. public void normalize(); elem.normalize(); public void removeAttribute(String name) throws DOMException; ... elem.removeAttribute("id"); ... public void removeAttributeNS(String namespaceURI, String localName) throws DOMException; public Attr removeAttributeNode(Attr oldAttr) throws DOMException; Attr attr; if ((attr = elem.getAttributeNode("temp")) != null) { // remove it elem.removeAttributeNode(attr); } public void setAttribute(String name, String value) throws DOMException; if (elem.getAttribute("name") == "") { // oh well, set a reasonable default elem.setAttribute("name", elem.getTagName()); } public void setAttributeNS(String namespaceURI, String qualifiedName, String value) throws DOMException; This text is broken.
public Attr setAttributeNode(Attr newAttr) throws DOMException; Attr attr; if ((attr = elem.getAttributeNode("id")) == null) { // add a default, unique id attr = doc.createAttribute("id"); attr.setValue(MyClass.makeUniqueID(elem)); // continue processing } public Attr setAttributeNodeNS(Attr newAttr) throws DOMException;
Entity ndEnt = (Entity)doc.getDoctype().getEntities().getNamedItem("my_entity");
String getNotationName(); boolean fParsedEnt = ndEnt.getNotationName() == null; String getPublicId(); Entity ndEnt = (Entity)doc.getDoctype().getEntities().getNamedItem("my_entity"); // if my_entity type was found and there is a system ID (URL)... if (ndEnt != null && ndEnt.getPublicId() != null) { try { // ...get the URL protocol URL urlSys = new URL(ndEnt.getPublicId()); System.out.println("Entity " + ndEnt.getNodeName() + ": protocol " + urlSys.getProtocol()); } catch (MalformedURLException e) { } } String getSystemId(); Entity ndEnt = (Entity)doc.getDoctype().getEntities().getNamedItem("my_entity"); String strURL = ndEnt.getPublicId(); // if can't find the public URL if (strURL == null) { // find the system URL strURL = ndEnt.getSystemId(); } EntityReference ndER = doc.createEntityReference("my_entity");
NamedNodeMap nnm = elem.getAttributes(); unsigned long getLength(); for (int i = 0; i < nnm.getLength(); i++) { ... }
public Node getNamedItem(String name); // in this map, and add it if necessary if (nnm.getNamedItem("id") == null) { // get the document Document doc = elem.getOwnerDocument(); // create a new attribute Node Attr attrID = doc.createAttribute("id"); // set the attribute value attrID.appendChild(doc.createTextNode(makeUniqueID(elem))); // ... and add it to the NamedNodeMap nnm.setNamedItem(attrID); } public Node getNamedItemNS(String namespaceURI, String localName);
public Node item(unsigned long index); if (nnm.getLength() > 0) { nnm.removeNamedItem(nnm.item(nnm.getLength()-1).getNodeName()); } public Node removeNamedItem(String name) throws DOMException; NamedNodeMap nnm = elem.getAttributes(); if (nnm.removeNamedItem("id") == null) { System.err.println("no ID attribute found"); } public Node removeNamedItemNS(String namespaceURI, String localName);
public Node setNamedItem(Node arg) throws DOMException; // in this map, and add it if necessary if (nnm.getNamedItem("id") == null) { // get the document Document doc = elem.getOwnerDocument(); // create a new attribute Node Attr attrID = doc.createAttribute("id"); // set the attribute value attrID.appendChild(doc.createTextNode(makeUniqueID(elem))); // ... and add it to the NamedNodeMap nnm.setNamedItem(attrID); } public Node setNamedItemNS(Node arg) throws DOMException;
NamedNodeMap getAttributes(); NamedNodeMap nnm = doc.getDocumentElement().getAttributes(); if (nnm != null) { for (int i = 0; i < nnm.getLength(); i++) { // print the attribute and value System.out.println(nnm.item(i).getNodeName() + " = \"" + nnm.item(i).getNodeValue() + "\""); } } NodeList getChildNodes(); NodeList nlChildren = elem.getChildNodes(); Node ndChild; for (int iNode = 0; iNode < nlChildren.getLength(); iNode++) { ndChild = nlChildren.item(iNode); if (ndChild.getNodeType() == Node.TEXT_NODE) { System.out.println(ndChild.getNodeValue()); } } Node getFirstChild(); for (Node nd = ndDump.getFirstChild(); nd != null; nd = nd.getNextSibling()) { if (nd.getNodeValue() != null) { System.out.println(nd.getNodeValue()); } } Node getLastChild(); for (Node nd = ndDump.getLastChild(); nd != null; nd = nd.getPreviousSibling()) { if (nd.getNodeValue() != null) { System.out.println(nd.getNodeValue()); } } public String getLocalName();
public String getNamespaceURI();
Node getNextSibling(); for (Node nd = ndDump.getFirstChild(); nd != null; nd = nd.getNextSibling()) { if (nd.getNodeValue() != null) { System.out.println(nd.getNodeValue()); } } String getNodeName(); Node ndDoc = (Node)doc.getDocumentElement(); System.out.println("Document root element type: " + ndDoc.getNodeName()); unsigned short getNodeType(); public boolean isElement(Node nd) { return nd.getNodeType() == Node.ELEMENT_NODE; } String getNodeValue() throws DOMException; public void setNodeValue(String nodeValue) throws DOMException; if (nd.getNodeType() == Node.TEXT_NODE) { // make it lowercase nd.setNodeValue(nd.getNodeValue().toLowerCase()); } Document getOwnerDocument(); Document doc = elem.getOwnerDocument(); Text txtAdd = doc.createTextNode("My $.02"); elem.appendChild(txtAdd); Node getParentNode(); elem.getParentNode().removeChild(elem); public String getPrefix(); public void setPrefix(String prefix) throws DOMException;
Node getPreviousSibling(); for (Node nd = ndDump.getLastChild(); nd != null; nd = nd.getPreviousSibling()) { if (nd.getNodeValue() != null) { System.out.println(nd.getNodeValue()); } }
public Node appendChild(Node newChild) throws DOMException; if (elem.getFirstChild() != null) { elem.appendChild(elem.removeChild(elem.getFirstChild())); } public Node cloneNode(boolean deep); elem.cloneNode(true); public boolean hasAttributes();
public boolean hasChildNodes();
public Node insertBefore(Node newChild, Node refChild) throws DOMException; ndParent.insertBefore(ndNew, ndParent.getFirstChild()); public boolean supports(String feature, String version);
public void normalize();
// from the document tree elem.getParentNode().removeChild(elem); public Node removeChild(Node oldChild) throws DOMException;
public Node replaceChild(Node newChild, Node oldChild) throws DOMException; ndOld.getParentNode().replaceChild(ndNew, ndOld); NodeList nlChildren = elem.getChildNodes(); Node ndChild; for (int iNode = 0; iNode < nlChildren.getLength(); iNode++) { ndChild = nlChildren.item(iNode); if (ndChild.getNodeType() == Node.TEXT_NODE) { System.out.println(ndChild.getNodeValue()); } } unsigned long getLength();
public Node item(unsigned long index);
ProcessingInstruction pi = doc.createProcessingInstruction("my_app", "action=\"save\"");
String getData(); public void setData(String data) throws DOMException; if (pi.getTarget() == "MY_APPLICATION") { // check the data attribute for my own application-specific information if (pi.getData() == "CHECK_SIBLINGS") { // check the siblings ... } pi.setData("SIBLINGS_CHECKED"); } String getTarget(); if (pi.getTarget() == "MY_APPLICATION") { // do my application-specific processing here }CharacterData XML example. This is some character data. Resulting DOM object tree.
public Text splitText(unsigned long offset) throws DOMException; Text ndText = doc.createTextNode("This text is split."); // and split it Text ndSplit = ndText.splitText(9);