2010-12-16 8 views
2

제품의 지식을 xml 형식으로 표시하려고합니다. 다른 사이트가 있는지 여부를 productname에 표시하고 싶습니다. 표시하지 않으려합니다. 따라서, 나는이 방법으로 기본 XML 스키마 file.in을 만들고 싶다,이 XSD에서 다른 XML 스키마를 얻고 싶다. 모든 사이트. 너 나 좀 도와 줄 수있어?Xml 및 Xml 스키마

+2

질문에 대한 답변을 충분히 이해하지 못합니다. 데이터베이스에서 데이터를 읽고 방금 읽은 데이터를 XML 문서로 제공하고 싶습니까? 더 자세하게 얘기해 주 시겠어요? – JeffFerguson

답변

2

이, 가장 쉬운 방법은 테이블에서하는 XML을 할 수있는 쉬운 방법을 것은 그것을 직렬화하는 것입니다 :

  1. 10 열과 같은 C# 클래스를 만듭니다 (Visual Studio에서 무거운 짐을 덜어주기 위해 Linq To Sql 또는 Entity Framework에서 읽음).

  2. 클래스 XML을 직렬화 가능으로 설정하십시오. "Plain Old C# Object"(POCO라고도 함)를 만들면 아무 것도 할 필요가 없습니다. Linq to SQL에서 Datamodel의 직렬화 모드를 단방향으로 설정합니다.

  3. 데이터를 변수로 가져옵니다. Linq에와 이 ... 이것은 당신이도록 SqlConnection을 사용하여 데이터를 직접 받고보고있는 간단 그렇지 않으면

var db = new MyRepository(); 
var myList = from r in db.MyTableRecords 
      where r.someField == 'somevalue' 
      select r; 

로되는,하는 SqlCommand 및 SqlDataReader 개체 :

var myList = new List<MyClass>(); 
using (var conn = new SqlConnection(MyConnectionString)) 
{ 
    conn.Open(); 
    using(var cmd = conn.CreateCommand()) 
    { 
     cmd.CommandType = CommandType.Text; 
     cmd.CommandText = "SELECT ([Field1], ... [Field10]) FROM MyTable"; 
     using (var rdr = cmd.ExecuteReader()) 
     { 
     while (rdr.Read()) 
     { 
      myList.Add(new MyClass() 
      { 
       Field1 = rdr[0], 
       ... 
       Field10 = rdr[9] 
      }); 
     } 
     } 
    } 
} 
  1. Serializ 그것을 이메일 :
StringBuilder sb = new StringBuilder(); 
using (var sw = new StringWriter(sb)) 
{ 
    XmlSerializer xs = new XmlSerializer(typeof(List<MyClass>)); 
    xs.Serialize(sw, myList); 
} 
System.Xml.XmlDocument doc = new System.Xml.XmlDocument(); 
doc.LoadXml(sb.ToString()); 

프레스토를! 데이터가있는 XML 문서. Linq를 사용하여 이것은 매우 빠르고 고통 스럽습니다. 당신이 그것을 이해하고 그것으로 달려간 후에 제한은 Entity Framework를 시도하고 T4를 사용하여 자신의 클래스를 생성하는 법을 배웁니다.

0

에 관계없이 나중에 XML을 사용하여 수행 할 작업의
StringBuilder sb = new StringBuilder(); 
var xml = System.Xml.XmlWriter.Create(sb); 

dataTable.WriteXml(xml, System.Data.XmlWriteMode.WriteSchema); 

return sb.ToString();