【Java】【XML】SAX [4]

SAX サンプル [4]

 SAX を使ったサンプルプログラム(XML の各行数・列数を表示)

サンプル

printLoactionsLineWithSAX.java

import javax.xml.parsers.*;
import org.xml.sax.*;
import org.xml.sax.helpers.*;

public class printLoactionsLineWithSAX extends DefaultHandler {
	Locator locator;
	
	public static void main(String args[]) {
		try {
			printLoactionsLineWithSAX handler =	new printLoactionsLineWithSAX();
			SAXParserFactory factory = SAXParserFactory.newInstance();
			SAXParser parser = factory.newSAXParser();
			parser.parse(".\\src\\employee.xml", handler);
		} catch (Exception ex) {
			System.out.println(ex);
			System.out.println("Parser not support" );
		}
	}
	
	public void setDocumentLocator(Locator locator) {
		this.locator = locator;
	}
	
	public void startDocument() {
		printLocation("statDocument() method called at " );
	}
	
	public void startElement(String namesapceURI, String localName,
			String qualifiedName, Attributes atts) {
		printLocation("startElement() method called at " );
	}
	
	public void endElement(String namesapceURI, String localName,
			String qualifiedName, Attributes atts) {
		printLocation("endElement() method called at " );
	}
	
	public void charcters(char text[], int length) {
		printLocation("charcters() method called at " );
	}
	
	private void printLocation(String location) {
		int line = locator.getLineNumber();
		int column = locator.getColumnNumber();
		System.out.println(location + " Line Number : "
				+ line + "\tCoulumn Number : " + column);
	}
}

employee.xml(入力ファイル)

<?xml version="1.0"?>
<employee-detail>
	<employee>
		<Name>test1</Name>
		<id name="employee">id1</id>
		<email id="1">____xxx____1@xxx.com</email>
	</employee>
	<employee>
		<Name name="teacher">test2</Name>
		<id>id2</id>
		<email id="2">____xxx____2@xxx.com</email>
	</employee>
</employee-detail>

出力

statDocument() method called at  Line Number : 1	Coulumn Number : 1
startElement() method called at  Line Number : 2	Coulumn Number : 18
startElement() method called at  Line Number : 3	Coulumn Number : 12
startElement() method called at  Line Number : 4	Coulumn Number : 9
startElement() method called at  Line Number : 5	Coulumn Number : 23
startElement() method called at  Line Number : 6	Coulumn Number : 17
startElement() method called at  Line Number : 8	Coulumn Number : 12
startElement() method called at  Line Number : 9	Coulumn Number : 24
startElement() method called at  Line Number : 10	Coulumn Number : 7
startElement() method called at  Line Number : 11	Coulumn Number : 17