2016-04-19 17 views
0

私はDataStageを使用して以下のXMLをデータベースに使用しています。 DataStageでは、xmlから取得してdbテーブルに挿入するための特定のフィールドへのXPATHを指定できます。下のxmlからわかるように、タグのいくつかは空であるか存在しません。私は、タグが空であるか存在しないかを問い合わせることができるXPATH式が必要です。どちらか一方の場合は、そのフィールドのdbテーブルにNULLを挿入できるようにNULLを返すようにします。 Entity_ID 2222でPostal_Codeが存在しないので、dbテーブルのPostal_CodeフィールドにDB NULLが設定されているようにします。同様に、Cityタグが存在するが空のEntity_ID 1111では、CityのdbテーブルフィールドにNULLが必要です。どんな助けでも大歓迎です。前もって感謝します。タグが存在しないか空であるところでXPathを置き換えます。

<?xml version="1.0"?> 
<NewDataSet> 
<Entity_Data msdata:rowOrder="0" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata" diffgr:id="Entity Data1" diffgr:hasChanges="inserted" xmlns:diffgr="urn:schemas-microsoft-com:xml-diffgram-v1"> 
<Entity_ID>1111</Entity_ID> 
<Name>EntityName</Name> 
<Street>EntityStreet</Street> 
<City/> 
<State>EntityState</State> 
<Postal_Code>12345</Postal_Code> 
</Entity_Data> 
<Entity_Data msdata:rowOrder="1" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata" diffgr:id="Entity Data2" diffgr:hasChanges="inserted" xmlns:diffgr="urn:schemas-microsoft-com:xml-diffgram-v1"> 
<Entity_ID>2222</Entity_ID> 
<Name>EntityName</Name> 
<Street>EntityStreet</Street> 
<City>EntityCity</City> 
<State>EntityState</State> 
<Phone>555-555-5555</Phone> 
</Entity_Data> 
<Entity_Data msdata:rowOrder="4" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata" diffgr:id="Entity Data5" diffgr:hasChanges="inserted" xmlns:diffgr="urn:schemas-microsoft-com:xml-diffgram-v1"> 
<Entity_ID>3333</Entity_ID> 
<Name>EntityName</Name> 
<Street>EntityStreet</Street> 
<City>EntityCity</City> 
<State>EntityState</State> 
<Postal_Code>22222</Postal_Code> 
</Entity_Data> 
</NewDataSet> 
+0

XPathは何も置換できません。 *選択*言語であり、ノードを選択できます。ノードを作成できません。欠落しているノードを追加するには、XML(XSLTまたはXQueryを特殊目的言語、またはXMLパーサーを使用する汎用プログラミング言語)として変更できるプログラミング言語を使用します。 – Tomalak

+1

EDIT:タグが空であるか存在しないかを照会できるXPATH式が必要です。どちらか一方の場合は、XPATHにNULLを返して、そのフィールドのdbテーブルにNULLを挿入できるようにします。 Entity_ID 2222でPostal_Codeが存在しないので、dbテーブルのPostal_CodeフィールドにDB NULLが設定されているようにします。 – user5615623

+0

ああ、それはより良い説明です。私はDataStageを知らないが、存在しないノードを選択するとNULLと解釈されることが予想される。どちらのXPath式が既にありますか(DBにNULLを挿入する代わりに)何をしていますか? – Tomalak

答えて

0

私はすべての出力行(繰り返しのために使用されているキーを除く)のために「はい」にXML入力ステージ「NULL可能」プロパティを設定することでのDataStageにこの周りました。

関連する問題