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