2010-12-16 245 views
2

我想以xml格式顯示產品的知識。我想顯示產品名稱是否有其他網站,我不想展示這個。因此,我想創建基本的Xml架構文件。這樣,我想從這個XSD獲取不同的XML架構對於每個站點。你可以幫我嗎?Xml和Xml Schema

+2

我不明白你的問題是否足夠回答它。您想從數據庫中讀取數據並將剛剛讀取的數據作爲XML文檔呈現?你可以說得更詳細點嗎? – JeffFerguson 2010-12-16 13:50:57

回答

2

無論你想以後用XML做什麼,最簡單的方法,使XML列的表是其序列:

  1. 製作一個類似於10列的C#類(請閱讀Linq To Sql或實體框架,以便讓Visual Studio爲您完成繁重工作)。

  2. 使您的類XML可序列化。如果您製作的是「普通舊C#對象」(有時稱爲POCO),則不需要執行任何操作。在Linq to Sql中,將數據模型的序列化模式設置爲單向。

  3. 獲取變量中的數據。 使用LINQ到...這很簡單,只要

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

否則你看着自己讓你的數據使用的SqlConnection,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()); 

的Presto!包含您的數據的XML文檔。使用Linq到Sql這是非常快速和無痛的。在你掌握了它並且遇到它的侷限之後,試試Entity Framework並學習使用T4生成你自己的類。

0

這是最簡單的方式

StringBuilder sb = new StringBuilder(); 
var xml = System.Xml.XmlWriter.Create(sb); 

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

return sb.ToString();