我正在从 Internet 上的 XML 文件中获取数据,如下所示:
<?xml version="1.0" encoding="ISO-8859-1"?>
-<exchangerates type="Exhange rates" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" refamt="1" refcur="DKK" author="Bank">
-<dailyrates id="2016-07-22">
<currency rate="505.47" desc="Australian dollars" code="AUD"/>
<currency rate="380.36" desc="Bulgarian lev" code="BGN"/>
<currency rate="205.85" desc="Brazilian real" code="BRL"/>
<currency rate="515.31" desc="Canadian dollars" code="CAD"/>
<currency rate="684.99" desc="Swiss francs" code="CHF"/>
<currency rate="101.21" desc="Chinese yuan renminbi" code="CNY"/>
</dailyrates>
</exchangerates>
XSD 文件如下所示:
<?xml version="1.0"?>
<xs:schema xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="exchangerates">
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="0" name="dailyrates">
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="0" maxOccurs="unbounded" name="currency">
<xs:complexType>
<xs:attribute name="code" type="xs:string" use="optional" />
<xs:attribute name="desc" type="xs:string" use="optional" />
<xs:attribute name="rate" type="xs:string" use="optional" />
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute name="id" type="xs:date" use="optional" />
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute name="type" type="xs:string" use="optional" />
<xs:attribute name="author" type="xs:string" use="optional" />
<xs:attribute name="refcur" type="xs:string" use="optional" />
<xs:attribute name="refamt" type="xs:unsignedByte" use="optional" />
</xs:complexType>
</xs:element>
</xs:schema>
但在 SSIS(来自 XML Source Task)中,我得到如下数据。最后一列显示“1”而不是“日期”(在本例中为 2016-07-22)。我需要此日期位于“dailyrates_Id”列的每一行中。任何想法如何解决这个问题?
code desc rate dailyrates_Id
AUD Australian dollars 505.47 1
BGN Bulgarian lev 380.36 1
BRL Brazilian real 205.85 1
CAD Canadian dollars 515.31 1
这些属性位于不同的级别,因此这就是 XML Source 的工作方式。你有几个选择:
在变量中捕获 XML,将其作为参数传递给存储的 proc,然后在 proc 中将其切碎,使用如下所示:
祝你好运!
谢谢wBob!我昨天想出了类似的方法。