
編輯器會在輸入時驗證運算式。如果看到無效運算式訊息,則表示存在某種語法問題。這通常是由於未轉義方括號、圓括號或斜槓等保留字元導致的。
將空視為 null
選中將空視為 null,可將空輸入值(例如長度為 0 的字串)視為 NULL 輸出值。預設情況下未選中此選項,因此空輸入值將被視為空字串:"" 在對映可能與包含不接受 NULL 值列的資料庫表互動的情況下,不選中此設定可能會很有用。在這種情況下,空字串值可以防止插入資料庫時出現錯誤,或者從資料庫中提取的空字串值可能需要轉換為 NULL,以便更好地反映資料集。源
源索引標籤包含從源動態生成的 XML 元素清單,可以滾動瀏覽並選擇所需的元素。然後,它會在編輯器中的 ArcScript 中應用正確的 xpath,您可以在其中進行其他更改。 方括號中的任何運算式都會在 ArcScript 中作為變數進行計算。在大多數情況下,變數運算式包括源文件中元素的 xpath() 計算。可以使用多個方括號運算式來表示多個變數,這些運算式可以連續出現,也可以穿插在文字字元之間(方括號之外)。 例如,要組合兩個不同路徑的值:[xpath('Customer/First')] [xpath('Customer/Last')]
訊息頭
訊息頭可幫助 跟蹤資料在流程中的進度。所有跟蹤頭都會顯示在對映編輯器的訊息頭索引標籤中,可以在運算式中引用它們。要將節點新增為跟蹤頭,請右鍵單擊或點選對映中節點上的省略號,然後選擇新增跟蹤。 還可以使用對映編輯器中的新增訊息頭欄位並提供現有訊息頭的名稱,將其他訊息頭包含在運算式中。這些訊息頭不必是跟蹤頭。
變數
在對映中的某一點設定變數並稍後在對映中再次引用這些變數可能很有用。變數的範圍包含對映處理的整個文件。換句話說,變數的任何屬性在整個對映過程中都會持續存在,並且僅在 完成處理檔案時才被清除。 例如,對映可能需要統計採購訂單中多個行專案的總成本(也許對映包括一定數量的 LineItemCost 元素以及一個 TotalCost 元素)。可以向 LineItemCost 新增一個變數,以對每個 LineItemCost 元素的值求和。如果將此變數包含在遍歷所有行專案的 Foreach 迴圈中的元素中,則當 Foreach 迴圈退出時,總和將是 TotalCost。 要新增變數,請點選對映編輯器中節點上的省略號,然後選擇新增節點 > 新增變數。完成後,該變數將顯示在變數索引標籤中,可以在運算式中引用它。配置庫
使用配置庫索引標籤將全域配置庫中的專案新增到運算式中。如果有在整個流程的不同位置重複使用的值,這非常有用。可以在配置庫中定義這些值,然後在運算式的開頭引用它們。請記住,如果希望對映使用配置庫中專案的_值_,則需要在方括號內引用它;否則,編輯器會將專案_名稱_解釋為文字。格式化器
格式化器支援操作不同 xpath 處傳回的值。格式化器在運算式中由管道字元(|)分隔,並從左到右計算。例如:[xpath('City') | toupper | substring(0,3)]
在此範例中,傳回 City xpath 的值之前,所有字串字元都會轉換為大寫字元,並且結果中傳回前三個字元的子字串。例如,如果源文件的值為:
<City>Durham</City>
結果運算式傳回以下內容:
DUR
格式化器列在格式化器索引標籤上。單擊清單中的格式化器即可將其新增到運算式中。
字串處理
字串處理是編輯器的常見用例。常見的字串格式化器包括: 例如,可能希望將輸入 XML 中的CustomerName 值拆分為輸出 XML 中的兩個單獨欄位。使用 split 格式化器來完成此操作。split 的參數是用於分割字串的字元,以及應傳回的結果陣列索引(索引從 1 開始):
[xpath(CustomerName) | split(' ', 1)]
字串格式化器的完整清單請參閱此處。
日期處理
另一個常見用例是將日期從源文件重新格式化為目標文件。這由 todate 格式化器支援,它允許三個參數:- 輸出日期格式(必填)
- 輸入日期格式(可選):如果格式化器無法自動檢測輸入日期時間格式,請使用此格式。
- 嚴格輸入格式(可選):使用它來檢查傳入的日期值是否與輸入格式匹配。如果不匹配,任務會擲回錯誤,而不是將日期轉換為標準日期格式。預設不檢查。要強制檢查,請向格式化器新增
true。
[xpath(PurchaseDate) | todate(D, "mm/dd/yy", true)]
對日期計算有用的其他函式包括 dateadd 和 compare,可用於向日期新增或減去固定時間段,以及執行日期比較。
日期格式化器的完整清單請參閱此處。
數字運算
數字運算對於對源 XML 中的數值進行計算很有用。以下範例將美分轉換為美元,並確保結果值是包含兩位小數的十進位制值:[xpath(ItemCost) | divide(100) | decimal(2)]
可以使用數字格式化器計算稅額並將稅額新增到總數中。以下範例包含一組巢狀的數字格式化器運算式:每個運算式都從左到右計算,並且巢狀運算式會先完整計算,然後再傳回到外層運算式:
[xpath(Subtotal) | divide(100) | multiply([xpath(TaxPercent) | divide(100) | add(1)]) | decimal(2)]
數字格式化器的完整清單請參閱此處。
前瞻
xpath() 格式化器支援前瞻語法,以進一步指定應將源文件中的哪些值對映到目標文件。前瞻可以幫助在重複的 XML 元素結構中定位特定值。 例如,輸入 XML 可能有多個行專案,其中只有一個包含所需值。每個行專案都有相同的 xpath,因此需要使用前瞻語法從相同 xpath 的值中檢索所需值。 下面的 XML 演示了這種情況。請注意,LineItem 元素具有匹配的 XML 結構:
[xpath(LineItem/ItemAmount)]
為了指定 Tax 行專案,運算式需要檢視 LineItem 元素中的 ItemType 元素,該元素將行專案標識為 Tax 專案。LineItem 元素是前瞻的“父級”,而 ItemType 元素是前瞻的“目標”。
前瞻語法如下:在 xpath 運算式中,在前瞻父元素之後直接新增方括號。在方括號內,提供前瞻目標元素的 xpath,並使用 equals 運算式檢查目標值(注意方括號必須用反斜槓轉義):
[xpath(LineItem\[ItemType='Tax'\]/ItemAmount)]
這表示“查詢 LineItem/ItemAmount 的值,該值來自 LineItem/ItemType 為 Tax 的 LineItem 元素”。運算式將傳回值 1.38。
指令碼模式
使用編輯器頂部的指令碼模式開關,將條件編輯器從設計器模式切換到指令碼模式。這意味著條件必須使用 ArcScript 編寫,而不是使用標準設計器模式。指令碼模式允許您編寫不需要傳回輸出值的自定義 ArcScript。在節點上啟用指令碼模式後,該節點的值將顯示為指令碼名稱。它由以下圖示表示: