2012-10-18 3 views
0

데이터베이스에서 데이터를 가져 와서 ssis를 통해 XML 파일을 만들어야합니다. 지금까지 필자는 XmlTextWriter를 사용하여 XML 파일을 성공적으로 만들 수있는 스크립트를 만들었지 만 필요한 모든 데이터를 나열했지만 파일에 나열된 스키마도 필요로하고 어떻게해야할지 모르겠다.SSIS : 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(); 
    }  
} 

가 어떻게 여기에 스키마 정보를 추가 할 수 있습니다

여기에 (내 데이터 흐름에 스크립트 구성 요소를 사용하여) 내 xml 파일을 만들 수있는 내 현재 코드는? "WriteXmlSchema"에 대한 자습서를 보았습니다. 그러나 이것은 (사용하지 않는) 데이터 집합에서만 작동하는 것으로 보입니다.

정말 도움을 주셔서 감사합니다.

+0

스키마는 XML의 유효성을 검사하는 데 사용됩니다. 따라서 기존 스키마가 있거나 스키마를 작성해야합니다. 고객은 아마 당신이 스키마에 대해 XML의 유효성을 검사한다고 가정하고 있으며 스키마를 검토하여 유효성 검사 기준이 무엇인지보고 싶어합니다. 따라서 프로젝트 기대에 따라 고객과 다시 동기화 할 수 있습니다. – David

답변

1

XML 문서 내에서 기존 스키마를 참조하기 만하면 루트 요소의 속성 일뿐입니다. this tutorial re XML schemas을 참조하십시오. 이 작업을 수행하기위한 다양한 방법이있는 XSD 스키마 문서를 작성해야하는 경우 xWriter.WriteStartElement(collectionName);

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

을 추가 한 후 해당 페이지의 예에서, 스키마에 대한 참조를 작성합니다. 나는 "xsd를 만들 ..."라고 인터넷 검색을 제안합니다.

+0

그게 효과가! 감사 – goalie35