使用JAXP的DOM方式解析XML文檔(能力工場)

本節內容涉及到的知識: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")));


}



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章