Dom解析XML文档
Tony Blair 10 Downing Street, London, UK(061) 98765 (061) 98765 blair@everywhere.com Bill Clinton White House, USA(001) 6400 98765 (001) 6400 98765 bill@everywhere.com Tom Cruise 57 Jumbo Street, New York, USA(001) 4500 67859 (001) 4500 67859 cruise@everywhere.com Linda Goodman 78 Crax Lane, London, UK(061) 54 56789 (061) 54 56789 linda@everywhere.com
package cn.sisy.xml;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.NodeList;public class DomTest01 {public static void main(String[] args) throws Exception {DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();DocumentBuilder db = dbf.newDocumentBuilder();Document document = db.parse("candidate.xml");//知道文档大概结构:PERSONNodeList list = document.getElementsByTagName("PERSON");for(int i = 0 ; i
属性值:E01---节点类型:3---节点名称:#text---节点值:Tony Blair
属性值:E02---节点类型:3---节点名称:#text---节点值:Bill
属性值:E03---节点类型:3---节点名称:#text---节点值:Tom
属性值:E04---节点类型:3---节点名称:#text---节点值:Linda
package cn.sisy.xml;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;public class DomTest02 {public static void main(String[] args) throws Exception {DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();DocumentBuilder db = dbf.newDocumentBuilder();Document document = db.parse("student.xml");//getDocumentElement()访问文档的或文档元素的子结点//文档的子结点就是文档的根元素结点,适用于不知道文档结构Element root = document.getDocumentElement();System.out.println("根元素:"+root.getTagName());//获取根元素结点的所有子结点NodeList list = root.getChildNodes();for(int i = 0; i < list.getLength(); i++){//元素与子元素,元素与元素之间的空白也被当做了一个结点System.out.print(list.item(i).getNodeName());}//getTextContent():返回此节点及其后代的文本内容。
// for(int i = 0; i < list.getLength(); i++){
// Node n = list.item(i);
// System.out.print(n.getTextContent()+"--");
// }System.out.println();NodeList nodeList = document.getElementsByTagName("学生"); for(int i = 0; i < nodeList.getLength(); i++){//用于获取元素的属性值:适用于不知道属性名称的情况下NamedNodeMap nnm = nodeList.item(i).getAttributes();for(int j = 0; j
根元素:学生名册
#text学生#text学生#text学生#text
准考证号=001 学号=1 教室号=001
准考证号=002 学号=2 教室号=002
准考证号=003 学号=3 教室号=003
<学生名册 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="C:\Course30\student.xsd"><学生 学号="1" 准考证号="001" 教室号="001"><姓名>张三姓名><性别>男性别><年龄>20年龄>学生><学生 学号="2" 准考证号="002" 教室号="002"><姓名>李四姓名><性别>女性别><年龄>19年龄>学生><学生 学号="3" 准考证号="003" 教室号="003"><姓名>王五姓名><性别>男性别><年龄>21年龄>学生> 学生名册>
package cn.sisy.xml;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文档并且将其内容输出到命令行上*/
public class DomTest03 {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) {//map.getLength()此映射中的节点数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.println(map.getLength());}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("");}}System.out.print("" + tagName + ">");}
}