讓Visual Studio 2013爲你自動生成XML反序列化的類

  Visual Sutdio 2013增長了許多新功能,其中不少都直接提升了對代碼編輯的便利性。如:工具

  1. 在代碼編輯界面的右側滾動條上顯示不一樣顏色的標籤,讓開發人員能夠對所編輯文檔的修改、查找、定位狀況一目瞭然。而不用像往常同樣上下不停地拖動滾動條來定位到某一行,若是代碼量很大,上下拖動滾動條着實讓人很頭疼。優化

  2. 括號、代碼換行自動完成。在代碼編寫的過程當中,輸入左括號Visual Studio會自動幫你完成右括號,若是你不當心主動輸入了右括號,也沒有關係,Visual Studio會自動進行整理。代碼編輯的智能程度比以前的版本有所提升。spa

  3. 每個類或方法前面會自動添加references的數量,點擊以後能夠直接查找工程中哪些地方有引用,很是直觀。code

  4. 還有許多優化。xml

  Visual Studio 2013用得不太多,因此許多新增的功能只能之後慢慢再發掘。這裏介紹一個頗有用的功能,自動生成XML反序列化的類。以往想要在代碼中將XML反序列化成對象,咱們要麼手動建立這些對象(很容易出錯),要麼藉助於第三方的工具來生成Class。而如今,Visual Studio 2013能夠自動幫咱們完成這個工做。固然,若是你對XML反序列化並不感興趣,而熱衷於使用XElement或者XMLDocument來加載和解析XML,那麼你能夠忽略本文的內容。對象

  來看看在Visual Sutdio 2013中如何使用這個功能!blog

  1. 建立一個工程,或者打開現有的工程。必需要有一個工程啊!否則所生成的Classes如何編譯和運行呢?utf-8

  2. 新建一個XML文件,輸入你但願的內容。如:ci

<?xml version="1.0" encoding="utf-8"?>
<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>

  3. 全選整個XML文件的內容,Ctrl+C複製。element

  4. 建立一個.cs文件或打開工程中現有的.cs文件,將光標定位到你要建立一個Class的地方。

  4. 選擇Edit->Paste Special->Paste XML As Classes,OK!你會看到Visual Studio已經爲你生成好了反序列化的Classes。

  很方便吧!你能夠對生成的Classes作任何修改,包括修改屬性和對象的名稱以及類型,修改代碼邏輯和包含關係等。但有一點須要注意!反序列化的類必需要能匹配所對應的XML文檔的結構,不然在代碼中進行反序列化操做時會失敗。下面這個方法經過反序列化上面給出的XML,找出對應makeName的CarsCar對象。

public static CarsCar GetCar(string makeName)
{
    string xmlFilePath = "c:\\XMLFile1.xml";
    Cars cars = null;
    XmlSerializer serializer = new XmlSerializer(typeof(Cars));

    using (FileStream fs = new FileStream(xmlFilePath, FileMode.Open))
    {
        using (XmlReader reader = XmlReader.Create(fs))
        {
            cars = (Cars)serializer.Deserialize(reader);
        }
    }

    if (cars != null)
    {
        CarsCar car = cars.Car.Where(n => n.Make == makeName).FirstOrDefault();
        if (car != null)
        {
            return car;
        }
    }

    return null;
}
相關文章
相關標籤/搜索