开发手册 欢迎您!
软件开发者资料库

DOM解析器 - 解析XML文档

Apache Xerces DOM解析器解析XML文档 - 从简单和简单的步骤学习Apache Xerces,从基本到高级概念,包括概述,Apache Xerces XML解析器,DOM解析器,解析XML文档,查询XML文档,创建XML文档,修改XML Document,SAX Parser,StAX Parser。

使用DOM的步骤

以下是使用DOM Parser解析文档时使用的步骤.

  • 导入与XML相关的包.

  • 创建DocumentBuilder

  • 从文件或流创建文档

  • 提取根元素

  • 检查属性

  • 检查子元素

导入XML相关的包

import org.w3c.dom.*;import javax.xml.parsers.*;import java.io.*;

创建一个DocumentBuilder

DocumentBuilderFactory factory =DocumentBuilderFactory.newInstance();DocumentBuilder builder = factory.newDocumentBuilder();

从文件或流创建文档

StringBuilder xmlStringBuilder = new StringBuilder();xmlStringBuilder.append("  ");ByteArrayInputStream input =  new ByteArrayInputStream(   xmlStringBuilder.toString().getBytes("UTF-8"));Document doc = builder.parse(input);

提取根元素

Element root = document.getDocumentElement();

检查属性

//returns specific attributegetAttribute("attributeName"); //returns a Map (table) of names/valuesgetAttributes();

检查子元素

//returns a list of subelements of specified namegetElementsByTagName("subelementName"); //returns a list of all child nodesgetChildNodes();

演示示例

这是我们需要解析输入xml文件;

            Dinkar      Kad      Dinkar      85               Vineet      Gupta      Vinni      95               Jasvir      Singh      Jazz      90   

演示示例

DomParserDemo.java

package com.it1352.xml; import java.io.File;import javax.xml.parsers.DocumentBuilderFactory;import javax.xml.parsers.DocumentBuilder;import org.w3c.dom.Document;import org.w3c.dom.NodeList;import org.w3c.dom.Node;import org.w3c.dom.Element;public class DomParserDemo {   public static void main(String[] args){      try {         File inputFile = new File("input.txt");         DocumentBuilderFactory dbFactory             = DocumentBuilderFactory.newInstance();         DocumentBuilder dBuilder = dbFactory.newDocumentBuilder();         Document doc = dBuilder.parse(inputFile);         doc.getDocumentElement().normalize();                  System.out.println("Root element :"             + doc.getDocumentElement().getNodeName());         NodeList nList = doc.getElementsByTagName("student");                  System.out.println("----------------------------");         for (int temp = 0; temp < nList.getLength(); temp++) {            Node nNode = nList.item(temp);                        System.out.println("\nCurrent Element :"                + nNode.getNodeName());            if (nNode.getNodeType() == Node.ELEMENT_NODE) {               Element eElement = (Element) nNode;                              System.out.println("Student roll no : "                   + eElement.getAttribute("rollno"));                              System.out.println("First Name : "                   + eElement                  .getElementsByTagName("firstname")                  .item(0)                  .getTextContent());                              System.out.println("Last Name : "                + eElement                  .getElementsByTagName("lastname")                  .item(0)                  .getTextContent());                              System.out.println("Nick Name : "                + eElement                  .getElementsByTagName("nickname")                  .item(0)                  .getTextContent());                              System.out.println("Marks : "                + eElement                  .getElementsByTagName("marks")                  .item(0)                  .getTextContent());            }         }      } catch (Exception e) {         e.printStackTrace();      }   }}

上述程序将产生以下结果 :

Root element :class----------------------------Current Element :studentStudent roll no : 393First Name : DinkarLast Name : KadNick Name : DinkarMarks : 85Current Element :studentStudent roll no : 493First Name : VineetLast Name : GuptaNick Name : VinniMarks : 95Current Element :studentStudent roll no : 593First Name : JasvirLast Name : SinghNick Name : JazzMarks : 90