We would like to know how to change DOM element value.
/* w w w . j a v a2 s . c o m*/ import java.io.StringReader; import java.io.StringWriter; import javax.xml.parsers.DocumentBuilderFactory; import javax.xml.transform.Transformer; import javax.xml.transform.TransformerException; import javax.xml.transform.TransformerFactory; import javax.xml.transform.dom.DOMSource; import javax.xml.transform.stream.StreamResult; import org.w3c.dom.Document; import org.w3c.dom.Element; import org.w3c.dom.NodeList; import org.w3c.dom.Text; import org.xml.sax.InputSource; public class Main { public static String getXMLData() { return "<a><person><email>asdf</email></person></a>"; } public static void main(String[] argv) throws Exception { DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); Document doc = factory.newDocumentBuilder().parse( new InputSource(new StringReader(getXMLData()))); newEmail(doc, "email", "newEmail"); System.out.println(documentToString(doc)); } public static void newEmail(Document doc,String newname,String newemail) { Element root = doc.getDocumentElement(); NodeList rootlist = root.getChildNodes(); for(int i=0; i<rootlist.getLength(); i++) { Element person = (Element)rootlist.item(i); NodeList personlist = person.getChildNodes(); Element name = (Element)personlist.item(0); NodeList namelist = name.getChildNodes(); Text nametext = (Text)namelist.item(0); String oldname = nametext.getData(); if(oldname.equals(newname)) { Element email = (Element)personlist.item(1); NodeList emaillist = email.getChildNodes(); Text emailtext = (Text)emaillist.item(0); emailtext.setData(newemail); } } } public static String documentToString(Document document) { try { TransformerFactory tf = TransformerFactory.newInstance(); Transformer trans = tf.newTransformer(); StringWriter sw = new StringWriter(); trans.transform(new DOMSource(document), new StreamResult(sw)); return sw.toString(); } catch (TransformerException tEx) { tEx.printStackTrace(); } return null; } }
The code above generates the following result.