XPath 替换标记不存在或为空的位置

XPath replace where tag is non-existent or empty

我正在使用 DataStage 将下面的 XML 消耗到数据库中。 DataStage 允许我指定特定字段的 XPATH,以从 xml 中获取并插入数据库 table。从下面的 xml 中可以看出,某些标签为空或不存在。我需要一个 XPATH 表达式,它可以查询标签是否为空或不存在,如果是,那么我希望 XPATH 为 return 一个 NULL,以便可以将 NULL 插入数据库 table 对于该字段,例如在 Entity_ID 2222 上 Postal_Code 不存在,所以我希望数据库 table 中的 Postal_Code 字段填充一个 DB NULL。同样,在 Entity_ID 1111 上,City 标签存在但为空,我希望 City db table 字段中有一个 NULL。任何帮助是极大的赞赏。提前致谢。

<?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>

我在 DataStage 中解决了这个问题,方法是将所有输出行的 XML 输入阶段 'nullable' 属性 设置为 'yes'(用于重复的键除外) .