zoukankan      html  css  js  c++  java
  • Xml Deserialize

    C#:

    XmlDeserialize<C, Cs>(rdr["Cs"]))


    public List<T> XmlDeserialize<T, TList>(string xmlString)
    {
    var results = new List<T>();
    if (!string.IsNullOrEmpty(xmlString))
    {
    XmlSerializer xs = new XmlSerializer(typeof(TList));
    XmlTextReader reader = new XmlTextReader(new System.IO.StringReader(xmlString));

    results = (List<T>)xs.Deserialize(reader);
    }

    return results;
    }


    [XmlType("C")]
    public class C
    {
    public string CId { get; set; }
    }

    [Serializable()]
    [XmlRoot("ROOT")]
    public class Cs:List<C>
    {
    }

    sql:

    select name,(select cid from tb1 For XML PATH('Contacts'),ROOT('ROOT'))xmlrow from tb

    <ROOT>

      <Cs><CId>1</CId></Cs>

      <Cs><CId>2</CId></Cs>

    </ROOT>

    --------------------

    [Serializable()]
    public class Car
    {
        [System.Xml.Serialization.XmlElement("StockNumber")]
        public string StockNumber { get; set; }
    
        [System.Xml.Serialization.XmlElement("Make")]
        public string Make { get; set; }
    
        [System.Xml.Serialization.XmlElement("Model")]
        public string Model { get; set; }
    }
    
    
    [Serializable()]
    [System.Xml.Serialization.XmlRoot("CarCollection")]
    public class CarCollection
    {
        [XmlArray("Cars")]
        [XmlArrayItem("Car", typeof(Car))]
        public Car[] Car { get; set; }
    }

    The Deserialize function:

    CarCollection cars = null;
    string path = "cars.xml";
    
    XmlSerializer serializer = new XmlSerializer(typeof(CarCollection));
    
    StreamReader reader = new StreamReader(path);
    cars = (CarCollection)serializer.Deserialize(reader);
    reader.Close();

    And the slightly tweaked xml (I needed to add a new element to wrap <Cars>...Net is picky about deserializing arrays):

    <?xml version="1.0" encoding="utf-8"?>
    <CarCollection>
    <Cars>
      <Car>
        <StockNumber>1020</StockNumber>
        <Make>Nissan</Make>
        <Model>Sentra</Model>
      </Car>
      <Car>
        <StockNumber>1010</StockNumber>
        <Make>Toyota</Make>
        <Model>Corolla</Model>
      </Car>
      <Car>
        <StockNumber>1111</StockNumber>
        <Make>Honda</Make>
        <Model>Accord</Model>
      </Car>
    </Cars>
    </CarCollection>
  • 相关阅读:
    莫比乌斯反演套路一--令t=pd--BZOJ2820: YY的GCD
    BZOJ2720: [Violet 5]列队春游
    BZOJ2277: [Poi2011]Strongbox
    莫(meng)比(bi)乌斯反演--BZOJ2301: [HAOI2011]Problem b
    「CodePlus 2017 11 月赛」Yazid 的新生舞会
    「CodePlus 2017 11 月赛」大吉大利,晚上吃鸡!
    用NumGo实现安卓动画
    人生
    用NumGo实现安卓动画
    html5使用canvas绘制n角星
  • 原文地址:https://www.cnblogs.com/likem/p/4289766.html
Copyright © 2011-2022 走看看