2012-08-02 74 views
0

Iam通過xmlsource解析SSIS中的xml文檔。它沒有任何根標籤。所以iam嘗試通過XSLT將根標記添加到我的xml文檔,但得到錯誤爲如何使用XSLT在XML文檔中添加根節點標記

[XML任務]錯誤:發生錯誤,出現以下錯誤消息:「有多個根元素。 2.「。

什麼是要使用的XSL添加根元素?請help..this是非常迫切..

請在下面找到

<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> 
+0

不確定我關注。 XSL作用於XML,而XML又必須有效。如果沒有根元素,則它無效,因此XSL將不會與它通信。如果你的根沒有XML,唯一的選擇就是通過類似PHP或者你正在使用的任何語言來處理根節點。 – Utkanos 2012-08-02 10:15:22

+1

@Utkanos:你的意思是「格式良好」 - 不是「有效的」。在以下情況下,XML文檔是有效的:1.格式正確;和2.它滿足給定的XML模式。 – 2012-08-02 12:20:35

回答

0

嘛,你使用的XSLT處理器的XML源代碼,你如何使用它?我通常不會建議使用字符串處理來構造XML,但是如果您有一個沒有根元素的片段,那麼可能要進行字符串連接"<root>" + fragment + "</root>"是獲取格式良好的文檔的最簡單方法。 XSLT可以使用片段,但是如何做到這一點取決於您使用的XSLT處理器或XML解析器,例如.NET可以使用XmlReader和​​並將ConformanceLevel設置爲片段,然後可以將其加載到XPathDocument(用於使用XSLT進行處理1.0和XslCompiledTransform),也可能與撒克遜的XdmNode(儘管我不確定我是否記得正確)。

樣式表將後來乾脆

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

包裹中所有頂級節點爲root元素。

+0

感謝您的答覆 – user1571002 2012-08-02 10:53:31

+0

我的XML文件的結構看起來像下面 \t <子節點....> \t \t \t <子節點。 ......> \t \t <子節點....> 再次應用解決方案,你以後一旦我得到了下面的錯誤 [XML任務] E rror:發生錯誤,出現以下錯誤消息:「有多個根元素。 11號線,2位「。但 ...標籤是XML增加了第一套 user1571002 2012-08-02 11:08:56

+0

您的文章中提到的SSIS和XML源代碼和錯誤消息提到XML任務,我不熟悉這些工具我對字符串連接的建議可以用任何編程語言完成,我建議在片段模式下使用XmlReader,如果使用.NET代碼運行轉換(例如C#,VB.NET或其他.NET語言),則XSLT可以工作。 。我不知道如何適合SSIS我很害怕,熟悉這一點的人需要幫助告訴你我的建議在這種情況下是否可行。 – 2012-08-02 11:39:06

相關問題