0

多くの人が抱えていると思われる問題を抱えています。Web サービスを使用して XML ファイルを作成していますが、エンコーディングがすべて間違っていて、適切な 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>

SSIS で XML タスクと XPATH をいじってみましたが、書式設定がまだ間違っています。

4

3 に答える 3

0

おそらくxmlタスクでXSLT操作を選択して、xmlを有効なxmlに変換できます

于 2013-05-14T12:41:42.597 に答える
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」に書き込みます。これが私のシナリオです。 ここに画像の説明を入力

于 2016-09-22T15:20:48.220 に答える