Xml и Xml Schema - PullRequest
       1

Xml и Xml Schema

1 голос
/ 16 декабря 2010

Я хочу показать знания продукта в формате xml.Я хочу показать название продукта, будь то другой сайт, я не хочу показывать это.Таким образом, я хочу создать файл базовой XML-схемы. Таким образом, я хочу получить разные XML-схемы из этого XSD для каждого сайта.Вы можете мне помочь?

Ответы [ 2 ]

3 голосов
/ 16 декабря 2010

Независимо от того, что вы хотите сделать с xml впоследствии, самый простой способ сделать xml из вашей таблицы - это сериализовать его:

  1. Создать класс C #, подобныйваши 10 столбцов (читайте в Linq To Sql или Entity Framework, чтобы позволить Visual Studio сделать тяжелую работу за вас).

  2. Сделайте ваш класс XML Serializable.Если вы делаете «Простой старый объект C #» (иногда называемый POCO), вам не нужно ничего делать.В Linq to Sql установите режим сериализации Datamodel на однонаправленный.

  3. Получите ваши данные в переменных.С Linq To ... это так же просто, как

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. Сериализуйте его:
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 голосов
/ 16 декабря 2010

это самый простой способ

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

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

return sb.ToString();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...