[Java] อ่านข้อมูลจาก XML โดยใช้ JDOM Parser

การอ่านข้อมูลจาก xml โดยใช้ Java นั้นมีหลายรูปแบบมากเนื่องจาก Java เองมี XML Parser อยู่หลายตัว สำหรับตัวอย่างนี้จะใช้ JDOM Parser ซึ่งเร็วกว่าตัวอื่น เนื่องจากไม่ไ่ด้ใช้ในการแก้ไขข้อมูล xml แต่เป็นการอ่านข้อมูลจาก xml เพียงอย่้างเดียว
1. โหลด jdom-x.x.jar จากนั้นก็ add เข้าไปในโปรเจค
2. ข้อมูลที่จะรับมาจาก ผู้ใช้งานโดยการ post เข้ามายัง Sevlet ที่เตรียมไว้จะมีลักษณะดังนี้

<Payments>
	<customer id='1'>
		<item>1001</item>
		<price>1000.00</price>
	</customer>
	<customer id='2'>
		<item>1002</item>
		<price>20.00</price>
	</customer>
</Payments>

3. เขียน code ดังนี้

package com.seconknow.lab;
import java.io.ByteArrayInputStream;
import java.io.IOException;
import java.util.List;
import org.jdom.Document;
import org.jdom.Element;
import org.jdom.JDOMException;
import org.jdom.input.SAXBuilder;
/**
 * @author Supot Saelao
 * @version 1.0
 */
public class SAXWithJdom {
    
    public static void main(String ... args) {
        String xml = "<Payments><customer id='1'><item>1001</item>"+
                    "<price>1000.00</price></customer><customer id='2'>"+
                    "<item>1002</item><price>20.00</price></customer></Payments>";
        try {
            SAXBuilder saxBuilder = new SAXBuilder();
            Document document = (Document) saxBuilder.build(new ByteArrayInputStream(xml.getBytes("UTF-8")));
            
            //Get root element [Payments]
            Element rootElement = document.getRootElement();

            //Get all child with tag [customer]
            List<Element> elements = rootElement.getChildren("customer");
            for(Element el : elements){
                System.out.println("Customer Id : " +el.getAttributeValue("id"));
                System.out.println("item : " + el.getChildTextTrim("item"));
                System.out.println("price : " + el.getChildTextTrim("price") +"\n");
            }
        } catch (IOException ex) {
            ex.printStackTrace();
        } catch (JDOMException ex) {
            ex.printStackTrace();
        } catch (Exception ex){
            ex.printStackTrace();
        }
    }
}

ทดสอบรันโปรแกรมจะได้ข้อมูลดังนี้

Customer Id : 1
item : 1001
price : 1000.00

Customer Id : 2
item : 1002
price : 20.00

เป็นอันจบงานชิ้นแรกในสัปดาห์นี้

ลอกมาจาก
Java XML Tutorial
อยากได้ code ตัวอย่าง java ติดต่อ xml ครับ ขอตัวอย่างสั้นๆ เข้าใจง่ายครับ

  1. No comments yet.

  1. No trackbacks yet.