0

データベースからデータをプルし、ssisを介してxmlファイルを作成する必要があります。これまで、(XmlTextWriterを使用して)xmlファイルを正常に作成し、必要なすべてのデータを一覧表示できるスクリプトを作成しましたが、ファイル内にスキーマも一覧表示する必要があるため、その方法がわかりません。

xmlファイルを作成するための現在のコードは次のとおりです(データフローでスクリプトコンポーネントを使用)。

StreamWriter sw;
XmlTextWriter xWriter;
String rowName;
String collectionName;
private int[] columnNames;    
public override void PreExecute()
{


    rowName = "Responses";
    collectionName = "NewDataSet";
    String fileName = Variables.FullFileName;        
    xWriter = new XmlTextWriter(fileName, null);
    xWriter.WriteStartDocument();
    xWriter.WriteStartElement(collectionName);
}

public override void PostExecute()
{        

    xWriter.WriteEndElement();
    xWriter.WriteEndDocument();
    xWriter.Close();
}

public override void Input0_ProcessInputRow(Input0Buffer Row)
{
    Type rowType = Row.GetType();
    PropertyInfo columnValue;

    xWriter.WriteStartElement(rowName);
    foreach (IDTSInputColumn100 column in this.ComponentMetaData.InputCollection[0].InputColumnCollection)
    {
        columnValue = rowType.GetProperty(column.Name);
        xWriter.WriteStartElement(column.Name);

        Object value = columnValue.GetValue(Row, null);
        if(value != null)
        {
            xWriter.WriteValue(value.ToString());

        }

        xWriter.WriteEndElement();
    }      
}

これにスキーマ情報を追加するにはどうすればよいですか?「WriteXmlSchema」のチュートリアルを見たことがありますが、これはデータセット(私が使用していない)でのみ機能するようです。

私はあなたが提供できるどんな助けにも本当に感謝します。

4

1 に答える 1

1

xmlドキュメント内の既存のスキーマを参照する必要がある場合、それはルート要素の単なる属性です。XMLスキーマに関するこのチュートリアルを参照してください。そのページの例では、 xWriter.WriteStartElement(collectionName); 追加後にスキーマへの参照を記述します

xWriter.WriteAttributeString("xsi:schemalocation", "http://www.w3schools.com note.xsd") 

xsdスキーマドキュメントを作成する必要がある場合、これを行うにはさまざまな方法があります。「...からxsdを作成する」をグーグルで検索することをお勧めします。

于 2012-10-18T20:46:01.400 に答える