我有一個問題,請考慮以下XML:如果在XPATH中不存在節點,如何返回常量?
<?xml version="1.0" encoding="UTF-16"?>
<APIDATA xmlns="api-com">
<ORDER EngineID="1" OrderID="66" OtherInfo="yes"><INSTSPECIFIER InstID="27" SeqID="17"/>
</ORDER>
<ORDER EngineID="2" OrderID="67" OtherInfo="yes"><INSTSPECIFIER InstID="28" SeqID="18"/>
</ORDER>
<ORDER EngineID="3" OrderID="68"><INSTSPECIFIER InstID="29" SeqID="19"/></ORDER>
</APIDATA>
我有SSIS工作。我希望將所有數據都傳遞給所有Order條目的每個循環中的SSIS變量。到目前爲止,我可以在SSIS控制流程的foreach循環得到的數據,用下面的:
EnumerationType: ElementCollection
OuterXPathString: //*[name() = 'ORDER']
InnerElementType: NodeText
InnerXPathString: @*[name() = 'EngineID'] | @*[name() = 'OrderID'] | child::node()/@*[name() = 'InstID'] | child::node()/@*[name() = 'SeqID']
我怎樣才能獲得活動促銷數據以這樣一種方式,它總是給後面的東西,即使節點不存在?例如,如果該節點不存在,則返回「否」。
在討論方面,我需要這個,因爲SSIS映射對結果集使用整數索引。如果結果集長度可能是4或5,我會得到索引超出界限的錯誤。這是我的想法來規避問題,總是返回一個固定長度的結果集。
如果這不能完成,另一個想法是用默認值擴展XML。所以如果另一個問題是:你能告訴我,如何將默認值添加到XPATH的XML?示例:使XML提到這個:
<?xml version="1.0" encoding="UTF-16"?>
<APIDATA xmlns="api-com">
<ORDER EngineID="1" OrderID="66" OtherInfo="yes"><INSTSPECIFIER InstID="27" SeqID="17"/>
</ORDER>
<ORDER EngineID="2" OrderID="67" OtherInfo="yes"><INSTSPECIFIER InstID="28" SeqID="18"/>
</ORDER>
<ORDER EngineID="3" OrderID="68" OtherInfo="defaultvalue"><INSTSPECIFIER InstID="29" SeqID="19"/></ORDER>
</APIDATA>
或者有沒有在SSIS解決這個更優雅的方式?