1DOM:Document Object Model (文档对象模型)。
2对于XML应用开发来说,DOM就是一个对象化的XML数据接口,一个与语言无关、与平台无关的标准接口规范
3要严格区分XML文档树中的根结点与根元素结点:根节点(Document)代表的是XML文档本身,是我们解析XML文档的入口,而根元素结点则表示XML文档的根元素,它对应于XML文档的Root。
解析XML文档
方法一:
//Stpe1 :获得Dom工厂解析器
DocumentBuilderFactory dbf=DocumentBuilderFactory.newInstance();
//Step2 创建解析器
DocumentBuilder dBuilder=dbf.newDocumentBuilder();
//Step3:解析一个XML文档 获得Document根节点
Document dom=dBuilder.parse(new File("E:\\我的文档\\开发相关\\JAVA视频2\\Java培训视频教程\\4.Java xml培训视频\\Lesson 2 code\\code\\candidate.xml"));
NodeList listsList=dom.getElementsByTagName("PERSON");
for(int i=0;i<listsList.getLength();i++)
{
Element element=(Element) listsList.item(i);
String contentString=element.getElementsByTagName("NAME").item(0).getFirstChild().getNodeValue();
System.out.println(contentString);
}
4 JAXP(Java API for XML Parsing):用于XML解析的Java API。
使用递归解析XML文档
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 + ">");
}