夜光序言:
有一种爱,就是像我对你这样,远远地,用一点微弱的想像,张望。给这暗下去的岁月,涂一抹口红。这么多年我都不知道,我是在用想象维持对你的爱情,还是在用你维持想象的能力。
正文:我最近呢~~在做项目的维护工作嗯,大家对于XML必须要很了解,这在工作中很重要~~
我们先写一个user的XML文件
package xml.dom;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
//夜光:调用user的XML
public class DomReader
{
public static void main(String[] a)
{
recursiveTraverse(); //夜光:自上而下进行访问
System.out.println("========夜光:华丽丽的分割线==========");
traverseBySearch(); //夜光:根据名称进行搜索
}
public static void recursiveTraverse()
{
try
{
//夜光:采用Dom解析xml文件
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
DocumentBuilder db = dbf.newDocumentBuilder();
Document document = db.parse("users.xml");
//夜光:获取所有的一级子节点
NodeList usersList = document.getChildNodes();
System.out.println(usersList.getLength()); //1
for (int i = 0; i < usersList.getLength(); i++)
{
Node users = usersList.item(i); //1 users
NodeList userList = users.getChildNodes(); //夜光:获取二级子节点user的列表
System.out.println("==" + userList.getLength()); //9
for (int j = 0; j < userList.getLength(); j++) //夜光:思考为什么是9
{
Node user = userList.item(j);
if (user.getNodeType() == Node.ELEMENT_NODE)
{
NodeList metaList = user.getChildNodes();
System.out.println("====" + metaList.getLength()); //7
for (int k = 0; k < metaList.getLength(); k++) //7
{
//到最后一级文本
Node meta = metaList.item(k);
if (meta.getNodeType() == Node.ELEMENT_NODE)
{
System.out.println(metaList.item(k).getNodeName()
+ ":" + metaList.item(k).getTextContent());
}
}
System.out.println();
}
}
}
} catch (Exception e) {
e.printStackTrace();
}
}
public static void traverseBySearch()
{
try
{
//夜光:采用Dom解析xml文件
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
DocumentBuilder db = dbf.newDocumentBuilder();
Document document = db.parse("users.xml");
Element rootElement = document.getDocumentElement();
NodeList nodeList = rootElement.getElementsByTagName("name");
if(nodeList != null)
{
for (int i = 0 ; i < nodeList.getLength(); i++)
{
Element element = (Element)nodeList.item(i);
System.out.println(element.getNodeName() + " = " + element.getTextContent());
}
}
} catch (Exception e) {
e.printStackTrace();
}
}
}