3.1 XML 概述
3.1.1 XML文档的结构
3.2 解析XML文档
3.3 验证XML文档
3.3.1 文档类型定义
3.4 使用XPath来定位信息
3.6 流机制解析器
3.6.1 使用SAX解析器
package sax;
import java.io.*;
import java.net.*;
import javax.xml.parsers.*;
import org.xml.sax.*;
import org.xml.sax.helpers.*;
/**
* This program demonstrates how to use a SAX parser. The program prints all hyperlinks of an
* XHTML web page. <br>
* Usage: java sax.SAXTest URL
* @version 1.00 2001-09-29
* @author Cay Horstmann
*/
public class SAXTest
{
public static void main(String[] args) throws Exception
{
String url;
if (args.length == 0)
{
url = "http://www.w3c.org";
System.out.println("Using " + url);
}
else url = args[0];
DefaultHandler handler = new DefaultHandler()
{
public void startElement(String namespaceURI, String lname, String qname,
Attributes attrs)
{
if (lname.equals("a") && attrs != null)
{
for (int i = 0; i < attrs.getLength(); i++)
{
String aname = attrs.getLocalName(i);
if (aname.equals("href")) System.out.println(attrs.getValue(i));
}
}
}
};
SAXParserFactory factory = SAXParserFactory.newInstance();
factory.setNamespaceAware(true);
factory.setFeature("http://apache.org/xml/features/nonvalidating/load-external-dtd", false);
SAXParser saxParser = factory.newSAXParser();
InputStream in = new URL(url).openStream();
saxParser.parse(in, handler);
}
}
3.6.2 使用StAX解析器
package stax;
import java.io.*;
import java.net.*;
import javax.xml.stream.*;
/**
* This program demonstrates how to use a StAX parser. The program prints all hyperlinks links of an
* XHTML web page. <br>
* Usage: java stax.StAXTest URL
* @author Cay Horstmann
* @version 1.0 2007-06-23
*/
public class StAXTest
{
public static void main(String[] args) throws Exception
{
String urlString;
if (args.length == 0)
{
urlString = "http://www.w3c.org";
System.out.println("Using " + urlString);
}
else urlString = args[0];
URL url = new URL(urlString);
InputStream in = url.openStream();
XMLInputFactory factory = XMLInputFactory.newInstance();
XMLStreamReader parser = factory.createXMLStreamReader(in);
while (parser.hasNext())
{
int event = parser.next();
if (event == XMLStreamConstants.START_ELEMENT)
{
if (parser.getLocalName().equals("a"))
{
String href = parser.getAttributeValue(null, "href");
if (href != null)
System.out.println(href);
}
}
}
}
}