【问题标题】:SSIS XMLSource only seeing null values in XML variableSSIS XMLSource 仅在 XML 变量中看到空值
【发布时间】:2011-05-01 00:18:30
【问题描述】:

我有一个数据流任务,它的 XMLSource 引用了一个 XML 变量。 DataFlow 任务确实识别出变量中有 x 行,但它只在每一行中看到空值:

xml变量值:

<?xml version="1.0" encoding="utf-8"?>
<words>
   <word>butter</word>
   <word>crispy</word>
</words>

我使用此源在 XMLSource 编辑器中生成 XSD - 这是自动生成的 XSD:

<?xml version="1.0"?>
<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">
  <xs:element name="words">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" maxOccurs="unbounded" name="word" type="xs:string" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
</xs:schema>

该包编译、执行和处理我的 XML 中的所有行,但只看到空值而不是实际的文本字符串...这是读取 XML 变量后 DataViewer 显示 2 行的截图:

【问题讨论】:

  • 是否有某种编码选项您必须在某处弄乱?

标签: sql-server ssis package dts


【解决方案1】:

我发现了一种获取要填充的值的方法...我将在此处发布它而不给自己加分,以防其他人遇到同样的问题。这只是一个“如何解决”,但我会感谢任何可以解释“更深层次的原因”的人。

本质上,XML 需要包装在另一个根节点中:

<?xml version="1.0" encoding="utf-8"?>
<datarows>
   <words>
      <word>bacon</word>
      <word>roasted</word>
      <word>pork</word>
      <word>edamame</word>
   </words>
</datarows>

即使我使用的原始 XML 是有效的,SSIS 希望它被包装在一个额外的根节点中,我将其命名为 datarows。一旦我这样做了,包就会识别 word 值并成功完成。

关联的架构:

<?xml version="1.0"?>
<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">
  <xs:element name="datarows">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" maxOccurs="1" name="words">
          <xs:complexType>
            <xs:sequence>
              <xs:element minOccurs="0" maxOccurs="unbounded" name="word" />
            </xs:sequence>
          </xs:complexType>
        </xs:element>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
</xs:schema>

【讨论】:

    【解决方案2】:

    我也遇到了同样的问题。我正在尝试使用 Web 服务并将输出 xml 导入到 sql 2008 中的表中。

    问题实际上在于 Web 服务在输出 xml 中生成的命名空间。我使用的技巧是
    1. 将 Web 服务的输出存储在包级变量中
    2. 添加一个“脚本任务”,以替换不需要的名称空间。
    3. 然后使用'XMl Source Task' 将数据导入表格。

    -克里斯...

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多