本節內容涉及到的知識:JAXP的DOM方式解析XML文檔 (後續還有SAX方式解析XML文檔)
1,獲取document對象的模板代碼
2,將document寫入到文件中去的模板代碼
3,xml編程:增(增加一個節點到xml文檔中去);刪(刪除一個xml的節點);改(修改xml中某一個節點的內容);查(查詢xml文檔中某個節點中的內容)
4,修改xml中某個節點的屬性
//(1)獲取一個節點裏的內容
@Test
public void test01() throws ParserConfigurationException, SAXException, IOException{
//(1)獲取Document解析器工廠類
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
//(2)使用Document解析器工場,創建一個Document解析器
DocumentBuilder builder = factory.newDocumentBuilder();
//(3)使用Document解析器,解析xml文檔,得到一個代表XML文檔的document對象
Document document = builder.parse(new File("src/a.xml"));
NodeList ioList = document.getElementsByTagName("testappend");
Node node = ioList.item(0);
System.out.println(node.getTextContent());
}
//(2)增加一個節點
@Test
public void test02() throws ParserConfigurationException, SAXException, IOException, TransformerException{
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = factory.newDocumentBuilder();
Document document = builder.parse(new File("src/a.xml"));
NodeList javaee = document.getElementsByTagName("javaee");
Node appNode = document.createElement("testappend");
appNode.setTextContent("這是一個添加節點的測試");
javaee.item(0).appendChild(appNode);
//下面代碼的目的:將內存中代表xml文檔的document對象寫到文件中去
//(1)獲取一個轉換器工廠
TransformerFactory factory2 = TransformerFactory.newInstance();
//(2)獲取一個轉換器
Transformer transformer = factory2.newTransformer();
//(3)使用轉換器將內容寫到文件中去
transformer.transform(new DOMSource(document), new StreamResult(new File("src/a.xml")));
}
//(3)刪除一個節點
@Test
public void test03() throws ParserConfigurationException, SAXException, IOException, TransformerException{
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = factory.newDocumentBuilder();
Document document = builder.parse(new File("src/a.xml"));
Node testappend = document.getElementsByTagName("testappend").item(0);
testappend.getParentNode().removeChild(testappend);
TransformerFactory factory2 = TransformerFactory.newInstance();
Transformer transformer = factory2.newTransformer();
transformer.transform(new DOMSource(document), new StreamResult(new File("src/a.xml")));
}
//(4)操作節點的屬性
@Test
public void test04() throws ParserConfigurationException, SAXException, IOException, TransformerException{
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = factory.newDocumentBuilder();
Document document = builder.parse(new File("src/a.xml"));
Node ioNode = document.getElementsByTagName("io").item(0);
Element io = null;
if(ioNode.getNodeType()==Node.ELEMENT_NODE){
io = (Element) ioNode;
}
io.setAttribute("name", "ioName");
TransformerFactory factory2 = TransformerFactory.newInstance();
Transformer transformer = factory2.newTransformer();
transformer.transform(new DOMSource(document), new StreamResult(new File("src/a.xml")));
}