解析根目录 和 属性
xml文件如下--------------------------------------------------------------------------------------------------
<html>
<head>
<title>
test
</title>
</head>
<body algin="center" stly="windows.back()">
liangshi
</body>
</html>
实例程序如下---------------------------------------------------------------------------------------------------
import java.io.File;
import java.io.IOException;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
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;
import org.w3c.dom.Text;
import org.xml.sax.SAXException;
public class Dom {
int n = 0;
public static void main(String[] args){
//建立工厂
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
try {
//从工厂中得到documentBuilder
DocumentBuilder builder = factory.newDocumentBuilder();
//得到需要解析的文件
File f = new File("D://c++//test.xml");
//得到树
Document doc = (Document) builder.parse(f);
//解析数,得到树的根节点
Element root = doc.getDocumentElement();
//输出根节点,查看是否正确 应该输出的内容是 html
System.out.println(root.getTagName());
//得到所有的子节点
NodeList children = root.getChildNodes();
//得到共有多少的节点数
int num = children.getLength();
System.out.println(num);
Dom d = new Dom();
d.getNode(children);
} catch (ParserConfigurationException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}catch (SAXException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
//解析节点
public void getNode(NodeList children){
int num = children.getLength();
for(int i=0;i<num;i++){
Node child = children.item(i);
if(child instanceof Element){
Element chil = (Element)child;
NodeList chilList = chil.getChildNodes();
if(chilList.getLength()>1){
for(int j=0;j<n;j++){
System.out.print(" ");
}
System.out.println(chil.getTagName());
getNode(chilList);
//System.out.println("递归啊");
}else{
//打印节点名称
for(int j=0;j<n;j++){
System.out.print(" ");
}
System.out.println(chil.getTagName());
//打印节点中的文本
Text textNode = (Text)chil.getFirstChild();
String text = textNode.getData().trim();
for(int j=0;j<n;j++){
System.out.print(" ");
}
System.out.println("文本内容是:"+text);
NamedNodeMap attributes = chil.getAttributes();
getAttributes( attributes);
}
}
}
n++;
}
//解析属性
public void getAttributes(NamedNodeMap attributes){
int num = attributes.getLength();
for(int i=0;i<num;i++){
Node attribute = attributes.item(i);
String name = attribute.getNodeName();
String value = attribute.getNodeValue();
System.out.println("属性名称是:"+name +" 属性值是:"+value);
}
}
}
---------运行结果如下----------------------------------------------------------------------------------------
html
5
head
title
文本内容是:test
body
文本内容是:liangshi
属性名称是:algin 属性值是:center
属性名称是:stly 属性值是:windows.back()