We would like to know how to list all attribute.
import java.io.StringReader; import java.io.StringWriter; //from w ww . j av a2 s .com 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.Attr; import org.w3c.dom.Document; import org.w3c.dom.Element; import org.w3c.dom.NamedNodeMap; import org.xml.sax.InputSource; public class Main { public static String getXMLData() { return "<a attr='value'>asdf</a>"; } public static void main(String[] argv) throws Exception { DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); Document doc = factory.newDocumentBuilder().parse( new InputSource(new StringReader(getXMLData()))); dom(doc.getDocumentElement()); System.out.println(documentToString(doc)); } public static void dom(Element element) { NamedNodeMap attrs = element.getAttributes(); int numAttrs = attrs.getLength(); for (int i = 0; i < numAttrs; i++) { Attr attr = (Attr) attrs.item(i); String attrName = attr.getNodeName(); System.out.println(attrName); String attrValue = attr.getNodeValue(); System.out.println(attrValue); } } 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.