使用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