java&xml

原创 2005年05月28日 18:00:00

This is the simplest way to read data from an XML file into a Java program. I have also included some basic error checking, so you can directly cut-paste this code with a few changes ofcourse. All you have to do is change the XML tags within the program to match those that are present in your XML file.

XML File

<?xml version="1.0"?>
<book>
<person>
<first>Kiran</first>
<last>Pai</last>
<age>22</age>
</person>
<person>
<first>Bill</first>
<last>Gates</last>
<age>46</age>
</person>
<person>
<first>Steve</first>
<last>Jobs</last>
<age>40</age>
</person>
</book>

Program Output

Root element of the doc is book
Total no of people : 3
First Name : Kiran
Last Name : Pai
Age : 22
First Name : Bill
Last Name : Gates
Age : 46
First Name : Steve
Last Name : Jobs
Age : 40

Program Listing

The Java program to read the above XML file is shown below. Go through the program twice and you will understand all its parts. It may look intimidating at first sight, but believe me its very simple.

import java.io.File;
import org.w3c.dom.Document;
import org.w3c.dom.*;


import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.DocumentBuilder;
import org.xml.sax.SAXException;
import org.xml.sax.SAXParseException;

public class ReadAndPrintXMLFile{

public static void main (String argv []){
try {

DocumentBuilderFactory docBuilderFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder docBuilder = docBuilderFactory.newDocumentBuilder();
Document doc = docBuilder.parse (new File("book.xml"));

// normalize text representation
doc.getDocumentElement ().normalize ();
System.out.println ("Root element of the doc is " + doc.getDocumentElement().getNodeName());


NodeList listOfPersons = doc.getElementsByTagName("person");
int totalPersons = listOfPersons.getLength();
System.out.println("Total no of people : " + totalPersons);

for(int s=0; s<listOfPersons.getLength() ; s++){


Node firstPersonNode = listOfPersons.item(s);
if(firstPersonNode.getNodeType() == Node.ELEMENT_NODE){


Element firstPersonElement = (Element)firstPersonNode;

//-------
NodeList firstNameList = firstPersonElement.getElementsByTagName("first");
Element firstNameElement = (Element)firstNameList.item(0);

NodeList textFNList = firstNameElement.getChildNodes();
System.out.println("First Name : " + ((Node)textFNList.item(0)).getNodeValue().trim());

//-------
NodeList lastNameList = firstPersonElement.getElementsByTagName("last");
Element lastNameElement = (Element)lastNameList.item(0);

NodeList textLNList = lastNameElement.getChildNodes();
System.out.println("Last Name : " + ((Node)textLNList.item(0)).getNodeValue().trim());

//----
NodeList ageList = firstPersonElement.getElementsByTagName("age");
Element ageElement = (Element)ageList.item(0);

NodeList textAgeList = ageElement.getChildNodes();
System.out.println("Age : " + ((Node)textAgeList.item(0)).getNodeValue().trim());

//------


}//end of if clause


}//end of for loop with s var


}catch (SAXParseException err) {
System.out.println ("** Parsing error" + ", line " + err.getLineNumber () + ", uri " + err.getSystemId ());
System.out.println(" " + err.getMessage ());

}catch (SAXException e) {
Exception x = e.getException ();
((x == null) ? e : x).printStackTrace ();

}catch (Throwable t) {
t.printStackTrace ();
}
//System.exit (0);

}//end of main


}

There are better implementations of reading XML files which would work for any XML file. The above one would require a few changes every time the XML tag names change. But this is much more simpler than the other programs.


学习java&xml心得(三)

  XMLBuilder.class 主要是把指定的document.node对象转换成规范的xml字符串。用的是ibm的xml4j解析器.代码如下: package com.ceic.workflo...
  • zaowei21
  • zaowei21
  • 2005年01月16日 18:24
  • 3259

Java&Xml教程(一)简介

XML是广泛用于数据传输和存储的技术。Java语言提供个各种各样的API来解析XML,例如DOM、SAX、StAX、JAXB。也还有一些其他的API用于解析XML,例如JDOM。本教程的目的是探索使用...
  • Rongbo_J
  • Rongbo_J
  • 2015年12月07日 20:33
  • 1574

java&XML学习第三天,cocoon2

 由于对于cocoon 2的内容特别的感兴趣,所以跳过了对sax的学习就直接开始了cocoon 2的学习,事实证明这样是不对的,如果你只是想对cocoon 2作一个简单的了解,可以不学sax,但是如果...
  • zwhfyy
  • zwhfyy
  • 2009年06月02日 13:28
  • 751

学习java&xml心得(一)

  最近一段时间有空,啃了啃xml和与它相关的东东,做了一些实践性的代码和功能,做完后自己都不怎么满意,不过实践过程到是一个新手的典型例子。所以拿出来让高手指点指点。^_^   由于一直做b/s结构的...
  • zaowei21
  • zaowei21
  • 2005年01月16日 18:16
  • 3267

学习java&xml心得(二)

  XMLToolTest.class实现了对xml文档的操作。包括建立一个新xml document.档结构及内容或从指定xml文件或的document.构和内容,output到指定的xml文件(或...
  • zaowei21
  • zaowei21
  • 2005年01月16日 18:18
  • 2425

Java&Xml教程(六)使用JDOM解析XML文件

JDOM 提供了非常优秀的Java XML API来更方便的读取、修改、生成XML文档。JDOM还提供了包装类供用户从SAX、DOM、STAX事件解析、STAX流解析中选择具体的实现。 在本教程中,...
  • Rongbo_J
  • Rongbo_J
  • 2015年12月15日 21:45
  • 1941

Java&Xml教程(十)XML作为属性文件使用

我们通常会将Java应用的配置参数保存在属性文件中,Java应用的属性文件可以是一个正常的基于key-value对,以properties为扩展名的文件,也可以是XML文件.在本案例中,將会向大家介绍...
  • Rongbo_J
  • Rongbo_J
  • 2016年01月31日 14:25
  • 2021

Java&Xml教程(九)Java中通过XSD校验XML合法性

Java XML校验API能够通过XSD(XML Schema Definition)校验XML文件内容的合法性。在下面的案例中使用javax.xml.validation.Validator 类通过...
  • Rongbo_J
  • Rongbo_J
  • 2016年01月26日 21:28
  • 6313

Java&Xml教程(十一)JAXB实现XML与Java对象转换

JAXB是Java Architecture for XML Binding的缩写,用于在Java类与XML之间建立映射,能够帮助开发者很方便的將XML和Java对象进行相互转换。 本文以一个简单的...
  • Rongbo_J
  • Rongbo_J
  • 2016年02月27日 14:04
  • 1970

Java&Xml教程(二)使用DOM方式解析XML文件

DOM XML 解析方式是最容易理解的,它將XML文件作为Document对象读取到内存中,然后你可以轻松地遍历不同的元素和节点对象。遍历元素和节点不需要按照顺序进行。 DOM解析方式适合尺寸较小的...
  • Rongbo_J
  • Rongbo_J
  • 2015年12月08日 19:01
  • 1081
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:java&xml
举报原因:
原因补充:

(最多只允许输入30个字)