- import java.io.File;
- import javax.xml.parsers.DocumentBuilder;
- import javax.xml.parsers.DocumentBuilderFactory;
- import org.w3c.dom.Document;
- import org.w3c.dom.Element;
- import org.w3c.dom.NodeList;
- public class DomTest1
- {
- public static void main(String[] args) throws Exception
- {
- // step 1: 獲得dom解析器工廠(工作的作用是用於創建具體的解析器)
- DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
- // System.out.println("class name: " + dbf.getClass().getName());
- // step 2:獲得具體的dom解析器
- DocumentBuilder db = dbf.newDocumentBuilder();
- // System.out.println("class name: " + db.getClass().getName());
- // step3: 解析一個xml文檔,獲得Document對象(根結點)
- Document document = db.parse(new File("candidate.xml"));
- NodeList list = document.getElementsByTagName("PERSON");
- for(int i = 0; i < list.getLength(); i++)
- {
- Element element = (Element)list.item(i);
- String content = element.getElementsByTagName("NAME").item(0).getFirstChild().getNodeValue();
- System.out.println("name:" + content);
- content = element.getElementsByTagName("ADDRESS").item(0).getFirstChild().getNodeValue();
- System.out.println("address:" + content);
- content = element.getElementsByTagName("TEL").item(0).getFirstChild().getNodeValue();
- System.out.println("tel:" + content);
- content = element.getElementsByTagName("FAX").item(0).getFirstChild().getNodeValue();
- System.out.println("fax:" + content);
- content = element.getElementsByTagName("EMAIL").item(0).getFirstChild().getNodeValue();
- System.out.println("email:" + content);
- System.out.println("--------------------------------------");
- }
- }
- }
- import java.io.File;
- import javax.xml.parsers.DocumentBuilder;
- import javax.xml.parsers.DocumentBuilderFactory;
- import org.w3c.dom.Attr;
- import org.w3c.dom.Comment;
- import org.w3c.dom.Document;
- import org.w3c.dom.Element;
- import org.w3c.dom.NamedNodeMap;
- import org.w3c.dom.Node;
- import org.w3c.dom.NodeList;
- /**
- * 使用遞歸解析給定的任意一個xml文檔並且將其內容輸出到命令行上
- * @author zhanglong
- *
- */
- public class DomTest3
- {
- public static void main(String[] args) throws Exception
- {
- DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
- DocumentBuilder db = dbf.newDocumentBuilder();
- Document doc = db.parse(new File("student.xml"));
- //獲得根元素結點
- Element root = doc.getDocumentElement();
- parseElement(root);
- }
- private static void parseElement(Element element)
- {
- String tagName = element.getNodeName();
- NodeList children = element.getChildNodes();
- System.out.print("<" + tagName);
- //element元素的所有屬性所構成的NamedNodeMap對象,需要對其進行判斷
- NamedNodeMap map = element.getAttributes();
- //如果該元素存在屬性
- if(null != map)
- {
- for(int i = 0; i < map.getLength(); i++)
- {
- //獲得該元素的每一個屬性
- Attr attr = (Attr)map.item(i);
- String attrName = attr.getName();
- String attrValue = attr.getValue();
- System.out.print(" " + attrName + "=\"" + attrValue + "\"");
- }
- }
- System.out.print(">");
- for(int i = 0; i < children.getLength(); i++)
- {
- Node node = children.item(i);
- //獲得結點的類型
- short nodeType = node.getNodeType();
- if(nodeType == Node.ELEMENT_NODE)
- {
- //是元素,繼續遞歸
- parseElement((Element)node);
- }
- else if(nodeType == Node.TEXT_NODE)
- {
- //遞歸出口
- System.out.print(node.getNodeValue());
- }
- else if(nodeType == Node.COMMENT_NODE)
- {
- System.out.print("<!--");
- Comment comment = (Comment)node;
- //註釋內容
- String data = comment.getData();
- System.out.print(data);
- System.out.print("-->");
- }
- }
- System.out.print("</" + tagName + ">");
- }
- }