[记录]Android操作XML - w3c
languages.xml文件
<?xml version="1.0" encoding="UTF-8"?> <languages cat="it"> <lan id="1"> <name>Java</name> <ide>Eclipse</ide> </lan> <lan id="2"> <name>Swift</name> <ide>Xcode</ide> </lan> <lan id="3"> <name>C#</name> <ide>Visual Studio</ide> </lan> </languages>
解析xml关键代码
txt = (TextView) findViewById(R.id.txt); try { //创建一个DocumentBuilderFactory实例 DocumentBuilderFactory builderFactory = DocumentBuilderFactory.newInstance(); //创建一个DocumentBuilder对象 DocumentBuilder builder = builderFactory.newDocumentBuilder(); //创建一个Document,对应一个xml文件 Document document = builder.parse(getAssets().open("languages.xml")); //获取Document的所有元素 Element element = document.getDocumentElement(); //获取标签为lan的所有元素,返回NodeList NodeList list = element.getElementsByTagName("lan"); //遍历NodeList for (int i = 0; i < list.getLength(); i++) { //获取当前循环到的一项 Element lan = (Element) list.item(i); //获取当前元素中属性名为id的值 txt.append("\n"+lan.getAttribute("id")+"\n"); txt.append(lan.getElementsByTagName("name").item(0).getTextContent()+"\n"); txt.append(lan.getElementsByTagName("ide").item(0).getTextContent()+"\n"); } } catch (IOException e) { e.printStackTrace(); } catch (SAXException e) { e.printStackTrace(); } catch (ParserConfigurationException e) { e.printStackTrace(); }
生成XML关键代码:
txt = (TextView) findViewById(R.id.txt);
try { //创建一个DocumentBuilderFactory实例 DocumentBuilderFactory builderFactory = DocumentBuilderFactory.newInstance(); //创建一个DocumentBuilder对象 DocumentBuilder builder = builderFactory.newDocumentBuilder(); //创建一个新的document Document docment = builder.newDocument(); //创建一个根元素,名为languages Element languages = docment.createElement("languages"); //为languages元素添加cat属性,值为it languages.setAttribute("cat", "it"); String[] names={"Java","Swift","C#"}; String[] ides={"Eclipse","Xcode","Visual Studio"}; //循环创建子元素 for (int i = 0; i < 3; i++) { //创建一个元素,名为lan Element lan = docment.createElement("lan"); //为lan元素添加id属性,值为当前循环的索引+1 lan.setAttribute("id",(i+1)+""); //为上面添加的lan元素添加子元素 Element name = docment.createElement("name"); name.setTextContent(names[i]); Element ide = docment.createElement("ide"); name.setTextContent(ides[i]); //将上面创建的两个元素添加到lan元素中 lan.appendChild(name); lan.appendChild(ide); //将lan元素添加到languages元素中 languages.appendChild(lan); } //将languages元素添加到docment中 docment.appendChild(languages); //创建一个TransformerFactory实例 TransformerFactory factory = TransformerFactory.newInstance(); //创建一个Transformer对象 Transformer former = factory.newTransformer(); //设置former的属性 former.setOutputProperty("encoding", "utf-8"); StringWriter writer = new StringWriter(); former.transform(new DOMSource(docment), new StreamResult(writer)); txt.append(writer.toString()); } catch (ParserConfigurationException e) { e.printStackTrace(); } catch (TransformerConfigurationException e) { e.printStackTrace(); } catch (TransformerException e) { e.printStackTrace(); }

浙公网安备 33010602011771号