#### 1. 实现方法

n 创建一个项目

n 创建一个包 javabasic59

n 创建 public class DomDemo,并添加 main()方法

#### 2. XML 操作研究

n 创建一个静态方法 public static Document parseXmlFile(String filename, boolean validating)，用来解析一个 XML 文件并返回一个 DOM 文档，如果参数 validating 为真，则还要就 DTD 文件对 xml 文件进行核查

l 下面的语句能抛出 SAXException、ParserConfigurationException 和 IOException，放在 try 块中，并用 catch 语句捕获这些异常

l 创建一个 builder factory 即 DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance()，并设置 validating 参数是否就 DTD 文件对 xml 文件进行核查，即 factory.setValidating(validating)

l 用 factory.newDocumentBuilder()创建一个 DocumentBuilder 然后解析 xml 文件即 Document doc = factory.newDocumentBuilder().parse(new File(filename))

l 把得到的 Dom 文档返回，即 return doc

n 在 main()方法中测试代码如下

l 调用 parseXmlFile 获得一个 Document 对象，即 Document doc = parseXmlFile("test.xml", false)

l 调用 doc 对象的 getElementsByTagName()方法获得一个节点列表 NodeList list，即 NodeList list = doc.getElementsByTagName("title")

l 用 for 语句 for(int i=0; i<list.getLength(); i++)输出每一个节点的内容：

l 先获得第 i 个节点即 Node node = list.item(i)

l 再获得节点内容即 String result = node.getTextContent()

l 输出节点内容即 System.out.println(result)

import java.io.*;

import javax.xml.parsers.*;

import org.w3c.dom.*;

import org.xml.sax.*;

public class DomDemo {

public static void main(String[] args) {

Document doc = parseXmlFile("test.xml", false);

NodeList list = doc.getElementsByTagName("title");

for(int i=0; i<list.getLength(); i++)

{

Node node = list.item(i);

String result = node.getTextContent();

System.out.println(result);

}

}

// 解析一个 XML 文件并返回一个 DOM 文档 P

// 如果 validating 为真，则还要就 DTD 文件对 xml 文件进行核查

public static Document parseXmlFile(String filename, boolean validating) {

try {

// 创建一个 builder factory

DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();

factory.setValidating(validating);

// 创建一个 builder 然后解析 xml 文件

Document doc = factory.newDocumentBuilder().parse(new File(filename));

return doc;

} catch (SAXException e) {

// 当 xml 文件不可用时

} catch (ParserConfigurationException e) {

} catch (IOException e) {

}

return null;

}

}