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

Java DOM Parser - 解析XML文档

Java DOM Parser解析XML文档 - 从基本概念开始,简单易学地学习Java XML,其中包括概述,Java XML解析器,DOM解析器,解析XML文档,查询XML文档,创建XML文档,修改XML文档,SAX Parser,JDOM XML Parser,StAX Parser,XPath Parser,DOM4J Parser,XSLT,JAXB。

使用JDOM的步骤

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

  • 导入与XML相关的包.

  • 创建SAXBuilder.

  • 从文件或流创建文档

  • 提取根元素

  • 检查属性

  • 检查子元素

导入与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               Vaneet      Gupta      vinni      95               jasvir      singn      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 : VaneetLast Name : GuptaNick Name : vinniMarks : 95Current Element :studentStudent roll no : 593First Name : jasvirLast Name : singnNick Name : jazzMarks : 90