您好,登錄后才能下訂單哦!
這篇文章主要介紹了 android dom如何解析xml,具有一定借鑒價值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。
首先自己創建一個xml文件:DomTest.xml
<?xml version="1.0" encoding="utf-8"?> <classes> <group name="一年級" num="10"> <person name="小明" age="7"> <chinese> 語文80 </chinese> <english> 英語89 </english> </person> <person name="小強" age="8"> <chinese> 語文90 </chinese> <english> 英語99 </english> </person> </group> <group name="二年級" num="20"> <person name="小文" age="8"> <chinese> 語文85 </chinese> <english> 英語95 </english> </person> <person name="小中" age="9"> <chinese> 語文80 </chinese> <english> 英語90 </english> </person> </group> </classes>
解析出來的結果顯示如下圖:
下面來分析源代碼:
/** * 用dom方式 解析xml 文件 * @param fileName */ private String domXmlParse(String fileName) { String str=""; // xml文檔創建工廠 DocumentBuilderFactory docFactory = DocumentBuilderFactory .newInstance(); // xml文檔創建實例 DocumentBuilder docBuilder; // xml文檔 Document doc = null; InputStream inStream = null; try { docBuilder = docFactory.newDocumentBuilder(); // 從assets文件夾下獲取文件 轉換成輸入流 inStream = this.getResources().getAssets().open(fileName); doc = docBuilder.parse(inStream); // 獲取xml跟元素 Element rootEle = doc.getDocumentElement(); // 二級父元素的list列表 NodeList groupNode = rootEle.getElementsByTagName("group"); // NodeList childNode = rootEle.getElementsByTagName("person"); // 遍歷Classe下所有的group for (int i = 0; i < groupNode.getLength(); i++) { Element groupEle = (Element) groupNode.item(i); String groupName = groupEle.getAttribute("name"); String num = groupEle.getAttribute("num"); str =str+"name ="+groupName+" num = "+num+"\n"; Log.e("xml", "name = " + groupName + " num = " + num); // NodeList personNode = groupNode.item(i).getChildNodes(); NodeList personNode = groupEle.getElementsByTagName("person"); // 遍歷group下的所有person for (int j = 0; j < personNode.getLength(); j++) { Element personEle = (Element) personNode.item(j); String name = personEle.getAttribute("name"); String age = personEle.getAttribute("age"); str =str+"personName ="+name+" personAge = "+age+"\n"; Log.e("xml", "name = " + name + " age = " + age); Element chineseEle = (Element) personEle .getElementsByTagName("chinese").item(0); Element englistEle = (Element) personEle .getElementsByTagName("english").item(0); String chinese = chineseEle.getFirstChild().getNodeValue(); String english = englistEle.getFirstChild().getNodeValue(); str =str+"chinese = "+chinese+" english = "+english+"\n"; Log.e("xml", "chinese = " + chinese + " english = " + english); } } } catch (ParserConfigurationException e1) { e1.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } catch (SAXException e) { e.printStackTrace(); } return str; }
為 XML 文檔的已解析版本定義了一組接口。解析器讀入整個文檔,然后構建一個駐留內存的樹結構,然后代碼就可以使用 DOM 接口來操作這個樹結構。優點:整個文檔樹在內存中,便于操作;支持刪除、修改、重新排列等多種功能;缺點:將整個文檔調入內存(包括無用的節點),浪費時間和空間;使用場合:一旦解析了文檔還需多次訪問這些數據;硬件資源充足(內存、CPU)。
感謝你能夠認真閱讀完這篇文章,希望小編分享的“ android dom如何解析xml”這篇文章對大家有幫助,同時也希望大家多多支持億速云,關注億速云行業資訊頻道,更多相關知識等著你來學習!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。