之後要使用到android中用來解析xml文件的XmlPullParser,在這之前要先來了解xml文件的結構。
1.文件開頭
首先在xml文件的開頭大多只會用到version、encoding。
<?xml version="1.0" encoding="utf-8"?>
這邊看到字面上的意思來看可以知道跟版本與編碼有關係,版本有1.0跟1.1兩種版本,大多情況下通常只會遇到1.0,在網路下載的也只遇過1.0的版本,編碼的部分有像是big5其他能夠設定的,這個部分在未來不會做到更動,稍微知道一下就可以了。
2.只能有一個根標籤
這邊拿android中的layout來做舉例。
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#D4E8C6"
android:clickable="true"
android:focusable="true"
android:gravity="center_horizontal"
android:orientation="vertical">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:gravity="center"
android:orientation="vertical">
<LinearLayout
android:id="@+id/select"
android:layout_width="match_parent"
android:layout_height="200dp"
android:layout_marginLeft="20dp"
android:layout_marginTop="20dp"
android:layout_marginRight="20dp"
android:background="@drawable/button_tp01"
android:gravity="center"
android:orientation="vertical">
<ImageView
android:layout_width="100dp"
android:layout_height="100dp"
android:src="@drawable/search" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="20dp"
android:text="@string/select_btn"
android:textColor="#215968"
android:textSize="20sp" />
</LinearLayout>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:gravity="center"
android:orientation="vertical">
<LinearLayout
android:id="@+id/note"
android:layout_width="match_parent"
android:layout_height="200dp"
android:layout_marginLeft="20dp"
android:layout_marginRight="20dp"
android:layout_marginBottom="20dp"
android:background="@drawable/button_tp01"
android:gravity="center"
android:orientation="vertical">
<ImageView
android:layout_width="100dp"
android:layout_height="100dp"
android:src="@drawable/notes" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="20dp"
android:text="@string/note_text"
android:textColor="#215968"
android:textSize="20sp" />
</LinearLayout>
</LinearLayout>
</LinearLayout>
根標籤就是最外層的LinearLayout,在xml中不能有兩個以上的根標籤,至於裡面要包多少標籤就沒有限制了。
3.開始與結束標籤必須成對
這邊拿其他例子舉例,像下面例子中的ATM00625、Data分別都有一個結束標籤。
<ATM00625>
<Data>
<Site>崙背</Site>
<county>雲林縣</county>
<PM25>7</PM25>
<DataCreationDate>2019-06-19 12:00</DataCreationDate>
<ItemUnit>μg/m3</ItemUnit>
</Data>
<Data>
<Site>富貴角</Site>
<county>新北市</county>
<PM25>7</PM25>
<DataCreationDate>2019-06-19 12:00</DataCreationDate>
<ItemUnit>μg/m3</ItemUnit>
</Data>
</ATM00625>
結構的部分先做簡單的說明,下面先說明xml常用的術語。
1.標籤(Tag)
標籤以上面的例子來說通常會有開始與結束標籤像是ATM00625,如果標籤內沒有其他東西有可能會是這個樣ATM00625/,空元素標籤在android layout中可以在各個元件中找到,像是TextView通常不會在裡面含有其他元素。
<TextView
android:id="@+id/air_quality_img"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_centerInParent="true"
android:layout_margin="60dp"
android:background="@drawable/park256" />
2.元素(Element)
元素通常代表開始標籤與結束標籤的其他標籤、內容,在ATM00625中包含Data這就是ATM00625的元素,而Data中又含有Site、county、PM25、DataCreationDate、ItemUnit這5個元素。
<ATM00625>
<Data>
<Site>崙背</Site>
<county>雲林縣</county>
<PM25>7</PM25>
<DataCreationDate>2019-06-19 12:00</DataCreationDate>
<ItemUnit>μg/m3</ItemUnit>
</Data>
<Data>
<Site>富貴角</Site>
<county>新北市</county>
<PM25>7</PM25>
<DataCreationDate>2019-06-19 12:00</DataCreationDate>
<ItemUnit>μg/m3</ItemUnit>
</Data>
</ATM00625>
3.屬性(Attribute)
這邊拿ATM00625的例子來改,屬性通常會依照「名字-值」來表達,像下面ATM00625中的第一個元素裡的Attribute就是屬性名稱,content就是屬性的值。
<ATM00625>
<Data Attribute="content">
<Site>崙背</Site>
<county>雲林縣</county>
<PM25>7</PM25>
<DataCreationDate>2019-06-19 12:00</DataCreationDate>
<ItemUnit>μg/m3</ItemUnit>
</Data>
<Data>
<Site>富貴角</Site>
<county>新北市</county>
<PM25>7</PM25>
<DataCreationDate>2019-06-19 12:00</DataCreationDate>
<ItemUnit>μg/m3</ItemUnit>
</Data>
</ATM00625>
今天先了解xml文件的部分,明天會開始使用XmlPullParser來解析xml內容。