對於基於web和開放標準資料,xml變得越來越普遍,xml用於cad或gis資料比較麻煩。這是因為gis資料基本上是扁平的、**的或關係的,而xml是巢狀的或物件導向的。為了整合xml資料到自己的系統上,需要克服這個挑戰。fme的最新一些版本致力於使得fme讀取xml更輕鬆。
這一部分內容就是針對xml的讀取。
載入讀模組後,資料格式選擇xml,開啟xml的格式的引數選項,可以看到引數如下:
引數:select configuration type(選擇配置型別)
這個引數指定使用讀取xml資料集的方式,包括:feature paths、xfmap和xrs方式。
使用feature paths方式,轉化所有的xml元素到fme要素中。使用flattening選項把巢狀的結構轉換為字段。父id被記錄所以可以建立關聯。所以不需要任何其他的指令碼就可以讀取xml。
1)feature paths方式。使用feature paths和flattenting,定義想要提取的xml結構的點(節點或要素),可以查詢xml。flattening可以在選中的xml要素中把巢狀的結構轉換為父.子的形式。記錄父id建立關聯。所以不需要xfmaps和其他指令碼,就可以讀取xml。
使用feature paths的方法是:
在新增讀模組對話方塊中,選擇xml格式,指定xml檔案後,在讀模組引數中,設定configuration type = "feature paths"。在"elements to match"中指定想要生成要素型別的節點。或者使用*將所有的節點生成要素(在較大的或複雜的資料集中需要小心使用)。想要顯示該節點中所有子節點的值,需要將flatten options引數中的enable flattening勾選(flatten options各個引數的具體換衣將在後面詳細介紹)。
下面是使用feature paths方式讀取的示例:
如xml的內容如下:
<?xml version="1.0" encoding="utf-8"?>
john
vancouver
11-22-99
12-11-09
-123.1,49.25
-122.9,49.15
june
surrey
02-25-05
9-15-10
-122.8,49.12
-122.5,49.0
設定configuration type = "feature paths"後,在"elements to match"中指定contact,生成的要素型別為contact,有兩條記錄,屬性字段如下:
name
city
activedate.from
activedate.to
coordinate_box.id
coordinate_box.coords.coord{}
設定configuration type = "feature paths"後,在"elements to match"中指定*,生成的要素型別為:
contact
coordinate_box
featurecollection
activedate
city
coord
coords
from
name
to每個要素各有生成兩條記錄。
這個處理不能保護原始的xml結構。『flattening』意味著會強行將xml的結構降級為類似於表的結構。這是不可逆的。如果讀取xml僅僅是想更新一些域,最好使用帶xquery查詢的xmlupdater或 xqueryupdater 轉換器。另一種方法是使用xfmaps得到想要的域值,再用xmltemplates重構xml,不過需要做更多的工作。
未完待續……
XML檔案的讀取
creates an xmlelement from a stream xmlelement pointing to the root of the xml public static xmlelement createxmlnode stream stream xmlelement doc.doc...
檔案xml的讀取
檔案複製到沙箱中 nsstring filename1 help.xml nsarray paths1 nssearchpathfordirectoriesindomains nsdocumentdirectory nsuserdomainmask yes nsstring sandboxpath1...
xml檔案的讀取
一.讀取xml檔案的步驟 1.遍歷所有節點元素,分別讀取 遞迴 2.根據節點名稱或者屬性名稱獲取節點的值 例子 把xml解析的 建立xml物件 xmldocument xmldoc new xmldocument xml路徑 載入 xmldoc.load xmlpath 1.獲取xml檔案的根節點 ...