1

xmlsource を介して SSIS で xml ドキュメントを解析しています。ルートタグはありません。したがって、XSLT を使用してルート タグを xml ドキュメントに追加しようとしていますが、次のようなエラーが発生します。

[XML タスク] エラー: 次のエラー メッセージでエラーが発生しました:「ルート要素が複数あります。11 行目、位置 2.」。

ルート要素を追加するために使用される XSL は何ですか? 助けてください..これは非常に緊急です..

以下のxmlソースを見つけてください

<organizational_unit>
  <box_id>898</box_id>
  <hierarchy_id>22</hierarchy_id>
  <parent_box_id>0</parent_box_id>
  <code>Team</code>
  <description />
  <name>CAPS Teams</name>
  <manager_title />
  <level>0</level>
</organizational_unit>
<organizational_unit>
  <box_id>967</box_id>
  <hierarchy_id>31</hierarchy_id>
  <parent_box_id>0</parent_box_id>
  <code>main</code>
  <description />
  <name>Protegent</name>
  <manager_title />
  <level>0</level>
    <organizational_unit>
       <box_id>968</box_id>
       <hierarchy_id>31</hierarchy_id>
       <parent_box_id>967</parent_box_id>
       <code>19L</code>
       <description>19L</description>
       <name>19L</name>
       <level>1</level>
    <managers>
       <manager>
          <hierarchy_mgr_id>243</hierarchy_mgr_id>
          <hierarchy_id>31</hierarchy_id>
          <box_id>968</box_id>
          <rep_id>19499</rep_id>
          <unique_rep_id>100613948</unique_rep_id>
         <first_name>Ed</first_name>
         <last_name>Kill</last_name>
      </manager>
    </managers>
    </organizational_unit>
    <organizational_unit>
        <box_id>1152</box_id>
        <hierarchy_id>31</hierarchy_id>
        <parent_box_id>967</parent_box_id>
        <code>UNKNOWN_m</code>
        <description>Unknown Reps</description>
        <name>Unknown Reps</name>
        <level>1</level>
    </organizational_unit>
</organizational_unit>
4

1 に答える 1

0

どの XSLT プロセッサを使用していますか?どのように使用しますか? 通常、XML を構築するために文字列処理を使用することはお勧めしませんが、ルート要素のないフラグメントがある場合は、おそらく文字列連結"<root>" + fragment + "</root>"を行うことが、整形式のドキュメントを取得する最も簡単な方法です。XSLT はフラグメントを処理できますが、その方法は使用する XSLT プロセッサまたは XML パーサーによって異なりXmlReaderます。おそらくサクソン人もそうです(正確に覚えているかどうかはわかりませんが)。XmlReaderSettingsConformanceLevelXPathDocumentXslCompiledTransformXdmNode

スタイルシートは単純に

<xsl:template match="/">
  <root>
    <xsl:copy-of select="node()"/>
  </root>
</xsl:template>

すべての最上位ノードをroot要素にラップします。

于 2012-08-02T10:28:45.533 に答える