日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > Android >内容正文

Android

Android数据存储——2.文件存储_C_DOM解析XML文档

發布時間:2025/4/16 Android 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Android数据存储——2.文件存储_C_DOM解析XML文档 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

今天學習Android數據存儲——文件存儲_DOM解析XML文檔

位于org.w3c.dom操作XML會比較簡單,就是將XML看做是一顆樹,DOM就是對這顆樹的一個數據結構的描述,但對大型XML文件效果可能會不理想

首先來了解點Java DOM 的 API:
1.解析器工廠類:DocumentBuilderFactory

創建的方法:DocumentBuilderFactory factory= DocumentBuilderFactory.newInstance();

2.解析器:DocumentBuilder

創建方法:通過解析器工廠類來獲得 DocumentBuilder builder = factory.newDocumentBuilder();

3.文檔樹模型Document

創建方法:

a.通過xml文檔 Document doc = builder.parse("member.xml");??

b.將需要解析的xml文檔轉化為輸入流 InputStream input = new FileInputStream("member.xml");

???Document doc =builder.parse(input?);?

Document對象代表了一個XML文檔的模型樹,所有的其他Node都以一定的順序包含在Document對象之內,排列成一個樹狀結構,以后對XML文檔的所有操作都與解析器無關,直接在這個Document對象上進行操作即可;

?包含的方法:

4.節點列表類NodeList

NodeList代表了一個包含一個或者多個Node的列表,根據操作可以將其簡化的看做為數組

5.節點類Node

Node對象是DOM中最基本的對象,代表了文檔樹中的抽象節點。但在實際使用中很少會直接使用Node對象,而是使用Node對象的子對象Element,Attr,Text等

6.元素類Element

是Node類最主要的子對象,在元素中可以包含屬性,因而Element中有存取其屬性的方法

7.屬性類Attr

代表某個元素的屬性,雖然Attr繼承自Node接口,但因為Attr是包含在Element中的,但并不能將其看做是Element的子對象,因為Attr并不是DOM樹的一部分

基本的知識就到此結束,更加具體的大家可以參閱JDK API文檔

使用DOM輸出xml文件

XML布局:

<TableLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"tools:context=".MyDOMDemo" ><TableRow ><TextViewandroid:layout_width="match_parent"android:layout_height="wrap_content"android:textSize="20sp"android:text="姓名:"/><TextViewandroid:id="@+id/name"android:layout_width="match_parent"android:layout_height="wrap_content"android:text="李興華"/></TableRow><TableRow ><TextViewandroid:layout_width="match_parent"android:layout_height="wrap_content"android:textSize="20sp"android:text="郵箱:"/><TextViewandroid:id="@+id/email"android:layout_width="match_parent"android:layout_height="wrap_content"android:text="mldnqa@163.com"/></TableRow><TableRow > <Buttonandroid:id="@+id/but"android:layout_width="match_parent"android:layout_height="wrap_content"android:text="保存"/></TableRow> </TableLayout>Java代碼:
public class MyDOMDemo extends Activity {private TextView name = null;private TextView email = null;private Button but = null;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);super.setContentView(R.layout.main);this.name=(TextView)super.findViewById(R.id.name);this.email=(TextView)super.findViewById(R.id.email);this.but=(Button)super.findViewById(R.id.but);this.but.setOnClickListener(new OnClickListenerImpl());}private class OnClickListenerImpl implements OnClickListener{@Overridepublic void onClick(View v) {/*** DOM輸出xml文件*/if(!Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)){//SD卡不存在則不操作return;//返回到程序的被調用處}File file = new File(Environment.getExternalStorageDirectory()+File.separator+"mldndata"+File.separator+"member.xml");//要輸出的文件路徑if(!file.getParentFile().exists()){//父路徑不存在file.getParentFile().mkdirs();//創建父文件夾}//實例化一個DocumentBuilderFactoryDocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();DocumentBuilder builder = null;try {//創建一個新的DocumentBuilderbuilder = factory.newDocumentBuilder();} catch (ParserConfigurationException e) {e.printStackTrace();}Document doc = null; doc = builder.newDocument(); //創建一個新的文檔//新建文檔元素Element addresslist = doc.createElement("addresslist");Element linkman = doc.createElement("linkman");Element name = doc.createElement("name");Element email = doc.createElement("email");//設置子元素name.appendChild(doc.createTextNode(MyDOMDemo.this.name.getText().toString()));email.appendChild(doc.createTextNode(MyDOMDemo.this.email.getText().toString()));linkman.appendChild(name);linkman.appendChild(email);addresslist.appendChild(linkman);doc.appendChild(addresslist);//實例化一個TransformerFactoryTransformerFactory tf = TransformerFactory.newInstance();Transformer t = null;try {//創建一個新的Transformert = tf.newTransformer();} catch (TransformerConfigurationException e) {e.printStackTrace();}//設置輸出屬性,編碼為GBKt.setOutputProperty(OutputKeys.ENCODING, "GBK");DOMSource source = new DOMSource(doc);//XML源文檔StreamResult result = new StreamResult(file);//輸出目標try {t.transform(source, result);//輸出xml文件} catch (TransformerException e) {e.printStackTrace(); }}} }查看產生的XML文件

使用DOM讀取xml文件

XML布局:

<TableLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"tools:context=".MyDOMDemo" ><TableRow ><TextViewandroid:layout_width="match_parent"android:layout_height="wrap_content"android:textSize="20sp"android:text="姓名:"/><TextViewandroid:id="@+id/name"android:layout_width="match_parent"android:layout_height="wrap_content"/></TableRow><TableRow ><TextViewandroid:layout_width="match_parent"android:layout_height="wrap_content"android:textSize="20sp"android:text="郵箱:"/><TextViewandroid:id="@+id/email"android:layout_width="match_parent"android:layout_height="wrap_content"/></TableRow><TableRow ><Buttonandroid:id="@+id/but"android:layout_width="match_parent"android:layout_height="wrap_content"android:text="讀取"/></TableRow> </TableLayout>Java代碼:

public class MyDOMDemo extends Activity {private TextView name = null;private TextView email = null;private Button but = null;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);super.setContentView(R.layout.main);this.name=(TextView)super.findViewById(R.id.name);this.email=(TextView)super.findViewById(R.id.email);this.but=(Button)super.findViewById(R.id.but);this.but.setOnClickListener(new OnClickListenerImpl());}private class OnClickListenerImpl implements OnClickListener{@Overridepublic void onClick(View v) {/*** DOM讀取xml文件*/if(!Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)){//SD卡不存在則不操作return;//返回到程序的被調用處}File file = new File(Environment.getExternalStorageDirectory()+File.separator+"mldndata"+File.separator+"member.xml");//要輸出的文件路徑if(!file.exists()){//文件不存在return;}//實例化一個DocumentBuilderFactoryDocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();DocumentBuilder builder = null;try {//創建一個新的DocumentBuilderbuilder = factory.newDocumentBuilder();} catch (ParserConfigurationException e) {e.printStackTrace();}Document doc = null; try {doc = builder.parse(file);//通過xml文件轉化為文檔} catch (SAXException e1) {e1.printStackTrace();} catch (IOException e1) {e1.printStackTrace();} //從文檔中獲得結點列表NodeList n1 = doc.getElementsByTagName("linkman");for(int x=0;x<n1.getLength();x++){Element e = (Element)n1.item(x);//取得元素MyDOMDemo.this.name.setText(e.getElementsByTagName("name").item(0).getFirstChild().getNodeValue());MyDOMDemo.this.email.setText(e.getElementsByTagName("email").item(0).getFirstChild().getNodeValue());}}} }讀取結果:



轉載于:https://www.cnblogs.com/coderookie0820/archive/2013/04/15/4367510.html

總結

以上是生活随笔為你收集整理的Android数据存储——2.文件存储_C_DOM解析XML文档的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 九九热最新 | 成人无码av片在线观看 | 亚洲二区在线播放视频 | 男人午夜视频 | 偷看洗澡一二三区美女 | 欧美黄色片视频 | 欧美人狂配大交3d | 一二三不卡视频 | 色乱码一区二区三区网站 | 伊人久久久| 同心兄弟 | 国内精品少妇 | 少妇99 | 亚洲性色视频 | 欧美成人aaa | 青娱乐国产 | 在线观看免费视频 | cao死你| 国产欧美精品一区二区色综合朱莉 | 国产aa| 精品日本一区二区 | 午夜xxxxx| 国产精品人八做人人女人a级刘 | 午夜三区 | 97射射| 男人的天堂av片 | 亚洲二区中文字幕 | 海角社区id:1220.7126,10. | 亚洲免费综合 | 日韩无套无码精品 | 国产sm主人调教女m视频 | 欧美人妻一区二区 | 日韩欧美一区二区三区四区 | 国产又粗又黄视频 | 91精产国品一二三区在线观看 | 最新黄色av网址 | 三级三级久久三级久久 | av女优天堂在线观看 | 中国精品一区二区 | 欧美日韩亚洲综合 | 精品无码国产一区二区三区av | 91精品国产视频 | 91干干干| 男人桶进美女尿囗 | 三级伦理片 | 欧美成人三区 | 小萝莉末成年一区二区 | 精品国产乱码 | 久久视频中文字幕 | 中国av在线| 91国产丝袜在线播放 | 日韩人成 | 日本内谢少妇xxxxx少交 | 一级bbbbbbbbb毛片 | 女色婷婷| 伊伊成人网 | 11一12免费毛片 | 色多多av| 无码一区二区三区在线观看 | а√天堂8资源中文在线 | 国产又爽又猛又粗的视频a片 | 那里有毛片看 | 国产精品一区二区三区免费观看 | 福利视频99 | 日本中文在线观看 | 无遮挡边吃摸边吃奶边做 | 日日爽视频 | 91精品国产色综合久久不卡98 | 91国偷自产中文字幕久久 | av片在线看| 亚洲最新 | av在线不卡免费观看 | 日韩熟女精品一区二区三区 | 美女网站免费视频 | 久久日精品 | 操比视频网站 | 观看毛片 | 国产精品黑人一区二区三区 | 青青草免费在线 | 欧美女人交配视频 | 国产一级免费av | 国产av无码专区亚洲a∨毛片 | 亚洲精选在线观看 | 人成在线视频 | 亚洲无卡视频 | 日本a视频在线观看 | 欧美日韩国产麻豆 | 国产三级漂亮女教师 | 亚洲天堂岛 | jizzjizz免费 | 国产色在线观看 | 国产一级做a爱免费视频 | 日本加勒比一区 | 曰批视频在线观看 | 黄色大片视频网站 | 欧美精品色呦呦 | 免费看欧美片 | av噜噜在线 | 国产精品手机在线 |