Locate Elements by Tag Name in Java
Description
The following code shows how to locate Elements by Tag Name.
Example
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
//w w w.ja v a 2s. c o m
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 {
static public void main(String[] arg) {
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
dbf.setValidating(true);
dbf.setNamespaceAware(true);
dbf.setIgnoringElementContentWhitespace(true);
Document doc = null;
try {
DocumentBuilder builder = dbf.newDocumentBuilder();
InputSource is = new InputSource("personWithDTD.xml");
doc = builder.parse(is);
makeNamelist(doc);
} catch (Exception e) {
System.err.println(e);
}
}
private static void makeNamelist(Document doc) {
String names = null;
Element root = doc.getDocumentElement();
NodeList nameElements = root.getElementsByTagName("name");
for (int i = 0; i < nameElements.getLength(); i++) {
Element name = (Element) nameElements.item(i);
Text nametext = (Text) name.getFirstChild();
if (names == null) {
names = nametext.getData();
} else {
names += ", " + nametext.getData();
}
}
Element namelist = doc.createElement("names");
Text namelisttext = doc.createTextNode(names);
namelist.appendChild(namelisttext);
root.insertBefore(namelist, root.getFirstChild());
}
}
<folks>
<person>
<name>B D</name>
<phone>999 555-8888</phone>
<email>b@xyz.net</email>
</person>
</folks>
]]>
</code>
<result><![CDATA[
<?xml version="1.0" standalone="yes"?>
<folks>
<names>
B D
</names>
<person>
<name>
B D
</name>
<phone>
999 555-8888
</phone>
<email>
b@xyz.net
</email>
</person>
</folks>