2012-06-28 65 views
0

我有一個問題,很多人似乎有,使用Web服務來創建一個XML文件,但我有的問題是,編碼是全錯了,不正確的XML:ssis xml編碼問題

所以它看起來是這樣的:

<?xml version="1.0" encoding="utf-16"?> 
<string>&lt;!--This file generated by XMLPull tool on 06/28/2012 05:01:21 AM--&gt; 
&lt;!--Datasource: Ticket--&gt; 
&lt;DATASET&gt;&lt;DATAROW&gt;&lt;TicketDesc&gt;TEST TICKET&lt;/TicketDesc&gt;&lt;/DATAROW&gt;&lt;/DATASET&gt;</string> 

<?xml version="1.0" encoding="UTF-16"?><!--This file generated by the XMLPull tool on 6/28/2012--><!--Datasource: Ticket--><DATASET><DATAROW TicketDesc="TEST TICKET></DATASET> 

,而不是和使用的模式:

<?xml version="1.0"?> 
<xsd:schema id="DATASET" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata"> 
<xsd:element name="DATASET"> 
    <xsd:complexType> 
     <xsd:sequence> 
      <xsd:element ref="DATAROW" minOccurs="0" maxOccurs="unbounded"/> 
     </xsd:sequence> 
    </xsd:complexType> 
</xsd:element> 
<xsd:element name="DATAROW"> 
    <xsd:annotation> 
     <xsd:appinfo/> 
    </xsd:annotation> 
    <xsd:complexType> 
     <xsd:attribute name="TicketDesc"> 
      <xsd:simpleType> 
       <xsd:restriction base="xsd:string"> 
        <xsd:maxLength value="2048"/> 
       </xsd:restriction> 
      </xsd:simpleType> 
     </xsd:attribute> 
    </xsd:complexType> 
</xsd:element> 
</xsd:schema> 

所以文件似乎錯了來自於web服務 我怎樣才能更改架構之上,以配合這個(用HTML標記):

<?xml version="1.0" encoding="UTF-16"?><!--This file generated by the XMLPull tool on 6/28/2012--><!--Datasource: Ticket--><DATASET><DATAROW TicketDesc="TEST TICKET></DATASET> 

我試圖與XML任務和XPath亂搞在SSIS中,但格式仍然是錯誤的。

回答

0

也許在XML任務你可以選擇XSLT操作,將XML轉換爲有效的XML

0

你可以使用「腳本任務」控制

,並使用替代原來的字符。

public void Main() 
    { 
     // TODO: Add your code here 
     Dts.Variables["User::SchoolData"].Value = Dts.Variables["User::SchoolData"].Value.ToString().Replace("&lt;", "<").Replace("&gt;", ">"); 
     ConnectionManager cm = Dts.Connections["Student.xml"]; 
     var path = cm.ConnectionString; 
     var textToWrite = (string)Dts.Variables["User::SchoolData"].Value; 
     System.IO.File.WriteAllText(path, textToWrite); 
     Dts.TaskResult = (int)ScriptResults.Success; 
    } 

例如,在這種情況下,我保存web服務結果「SchoolData」變量並替換它,然後把它寫爲「student.xml」 這是我的情景: enter image description here