1 DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();2 DocumentBuilder builder = factory.newDocumentBuilder();3 Document document = builder.parse(in);// 參數(shù)有多種類型,在此例中選擇的是InputStream類型的參數(shù)
這三行代碼分別是創(chuàng)建解析器工廠,創(chuàng)建解析器,獲取解析的XML文檔樹,之后就可以對document對象進(jìn)行具體的操作。
其中的主要操作大概有以下幾種:1 Element root = document.getDocumentElement();// 獲取文檔的根節(jié)點(diǎn)2 NodeList nodeList = document.getElementsByTagName("nodename");// 根據(jù)節(jié)點(diǎn)名稱獲取節(jié)點(diǎn)列表然后再循環(huán)遍歷nodeList中的節(jié)點(diǎn),利用節(jié)點(diǎn)對象的getChildNodes()的方法獲取子節(jié)點(diǎn)列表,直到取到所需要的節(jié)點(diǎn)。
解析注意點(diǎn):Dom解析會(huì)將xml中兩個(gè)標(biāo)簽之間的所有內(nèi)容都看成是子節(jié)點(diǎn),包括空白,其中節(jié)點(diǎn)類型分為:1. 帶有標(biāo)簽的子節(jié)點(diǎn)看成Element類型的子節(jié)點(diǎn)2. 不包含標(biāo)簽的空白子節(jié)點(diǎn)或者文字節(jié)點(diǎn)看成是text類型的子節(jié)點(diǎn)獲取節(jié)點(diǎn)值時(shí),必須獲取text類型的節(jié)點(diǎn)的值,而不是Element類型節(jié)點(diǎn)的值,Element節(jié)點(diǎn)的值永遠(yuǎn)都是null,也可以使用Element節(jié)點(diǎn)的getTextContent()來獲取Element類型的節(jié)點(diǎn)值所以,在遍歷子節(jié)點(diǎn)時(shí),需要做nodeList.item(i).getNodeType() == Element.ELEMENT_NODE這樣的一次判斷,若為true,則執(zhí)行nodeList.item(i).getTextContent()來獲取節(jié)點(diǎn)的值。2. XML生成:首先是創(chuàng)建一個(gè)Document對象,需要用到以下代碼:
1 DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();2 DocumentBuilder builder = factory.newDocumentBuilder();3 Document document = builder.newDocument();
然后是document對象的配置以及節(jié)點(diǎn)的創(chuàng)建和添加:
1 document.setXmlStandalone(true); //非必須配置,配置之后可以去除不必要的standalone屬性2 Element root = document.createElement("nodes"); // 創(chuàng)建文檔根節(jié)點(diǎn)3 document.appendChild(root);// 將根節(jié)點(diǎn)加入文檔中創(chuàng)建子節(jié)點(diǎn),添加id屬性,并加入根節(jié)點(diǎn)中,xml中節(jié)點(diǎn)的父子關(guān)系是通過節(jié)點(diǎn)的appendChild方法形成的。
1 Element node = document.createElement("node");// 創(chuàng)建子節(jié)點(diǎn)2 node.setAttribute("id", "1"); // 為子節(jié)點(diǎn)添加屬性3 root.appendChild(node); // 將子節(jié)點(diǎn)加入到根節(jié)點(diǎn)中當(dāng)節(jié)點(diǎn)設(shè)置完成之后需要將document對象轉(zhuǎn)換成xml文件,需要通過以下代碼轉(zhuǎn)換:
1 TransformerFactory factory = TransformerFactory.newInstance(); // 工廠類,用來獲取轉(zhuǎn)換對象2 Transformer transformer = factory.newTransformer(); // 獲取用于轉(zhuǎn)換的對象3 transformer.setOutput至此,通過DOM完成了XML文件的生成。DOM解析與創(chuàng)建XML的基本步驟也就是以上這么多,這是我學(xué)習(xí)之后的總結(jié),希望對需要學(xué)習(xí)這方面知識(shí)的朋友能有些許幫助。
新聞熱點(diǎn)
疑難解答
圖片精選
網(wǎng)友關(guān)注