**1. 解析XML文檔**
```xml
<students>
<student order="001" id="zhangsan">
<name>張三</name>
<age>25</age>
張三,你好!
</student>
<student order="002">
<name>李四</name>
<age>28</age>
李四,你好!
</student>
</students>
```
```java
@Test
public void read() throws ParserConfigurationException, IOException, SAXException {
String xmlFile = this.getClass().getResource("/student.xml").getPath();
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = factory.newDocumentBuilder();
File file = new File(xmlFile);
//xml文檔
Document document = builder.parse(file);
//所有的student節點
NodeList nodeList = document.getElementsByTagName("student");
Node node = nodeList.item(0);
//節點名稱:student
System.out.println("節點名稱:" + node.getNodeName());
//節點類型定義在接口Node中,如Node.ELEMENT_NODE
//節點類型:1
System.out.println("節點類型:" + node.getNodeType());
Element element = (Element) node;
//元素名:student
System.out.println("元素名:" + element.getTagName());
//order屬性值:001
System.out.println("order屬性值:" + element.getAttribute("order"));
//元素內的文本:
// 張三
// 25
// 張三,你好!
System.out.println("元素內的文本:" + element.getTextContent());
}
```
<br/>
**2. 將XML文檔存入另一個新的文檔**
```java
@Test
public void transform() throws ParserConfigurationException, IOException, SAXException, TransformerException {
String xmlFile = this.getClass().getResource("/student.xml").getPath();
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = factory.newDocumentBuilder();
File file = new File(xmlFile);
//xml文檔
Document document = builder.parse(file);
TransformerFactory tranFactory = TransformerFactory.newInstance();
Transformer transformer = tranFactory.newTransformer();
transformer.setOutputProperty(OutputKeys.ENCODING, "UTF-8");
transformer.setOutputProperty(OutputKeys.INDENT, "yes");
transformer.setOutputProperty("{http://xml.apache.org/xslt}indent-amount", "4");
Source xmlSource = new DOMSource(document);
Result result = new StreamResult("e:/student2.xml");
transformer.transform(xmlSource, result);
}
```