本文是因應 data.gov.tw 政府資料開放平台今年目標是能納入各機關上架資料時的資料檢核,以及可以將表格式資料匯出成 JSON or XML 方便程式使用,因此先列出初步的標準。
這邊的匯入資料無法通過,不代表資料不乾淨,只是代表沒有被規則納入而已。
XML
-
[A] 檢查 XML 是否為合法 XML
- 不合法,到 [Z]
- 合法,到 [B]
-
[B] 檢查開頭是否有「<?mso-application progid=“Excel.Sheet”」
- 有,當作 Excel 處理,到 [X]
- 沒有,到 [C]
-
[C] 檢查 root tag 是否為 KML
- 是的話,進到 [W]
- 不是的話,到 [D]
-
[D] 從 root tag 出發往 children 掃,掃到 childNodes 數量不等於一後停止
- 如果 childNodes 全部的 tag name 都一樣,就進到 [E]
- 如果 tag name 有不同,就進到 [V]
-
[E] 再檢查下一層的 childNodes ,如果數量都相同並且都是只有一層,並且 tag name 也相同,就視為表格型資料的 XML
- 符合,到 [S]
- 不符合,到 [V]
-
[S] 符合表格型資料,標記起來, nodeName 可以是欄位名
-
[V] 無法判斷的 XML ,結束處理
-
[W] 進到 KML 處理流程
-
[X] 進到 excel 處理流程,不當作 XML 處理
-
[Z] 標示為不合法 XML,需要警告
json
-
[A] 檢查是否為合法 JSON
- 不是合法 JSON ,到 [Z]
- 是合法 JSON ,到 [B]
-
[B] 看最外層的格式
- 是 array ,到 [C]
- 是 object ,到 [D]
- 其他,到 [Y]
-
[C] 檢查 array 內的每一個 element
- 全部都是 array ,到 [E]
- 全部都是 object ,到 [F]
- 其他,到 [X]
-
[D] 檢查是否有 type 這個 properties
- 沒有,進到 [X]
- 有,是 FeatureCollection(GeoJSON) ,進到 [V]
-
[E] 檢查 array 內是否每個元素都是非 array, object 的值
- 是,進到 [S]
- 不是,進到 [X]
-
[F] 檢查是否每個 object 的 properties 的集合都相同,並且 value 都是非 array, object
- 是,進到 [T]
- 不是,進到 [V]
-
[S] 是二維陣列並且矩形的 array JSON ,可以匯出成 CSV
-
[T] 是 properties 都相同的 array JSON ,可以匯出成 CSV
-
[V] 確定是 GeoJSON ,也可以支援匯出 CSV
-
[X] 標示為不認得的 JSON 格式
-
[Y] 標示為不認得的最外層 JSON 格式,可能需要警告
-
[Z] 標示為不合法 JSON ,需要警告
匯出
這邊匯出只針對已經確定「可匯出成CSV」的資料,這個範圍只有在原始資料的格式已經是表格性質的格式
XML
<dataset> <row> <col1>value1-1</col1><col2>value1-2</col2> </row> <row> <col1>value2-1</col1><col2>value2-2</col2> </row> </dataset>
JSON
- [{“col1”:“value1-1”, “col2”:“value1-2”}, {“col1”:“value1-2”,“col2”:“value2-2”}]