Nice-books.net
» » » » Язык программирования C#9 и платформа .NET5 - Троелсен Эндрю

Язык программирования C#9 и платформа .NET5 - Троелсен Эндрю

Тут можно читать бесплатно Язык программирования C#9 и платформа .NET5 - Троелсен Эндрю. Жанр: Базы данных год 2004. Так же Вы можете читать полную версию (весь текст) онлайн без регистрации и SMS на сайте Nice-Books.Ru (NiceBooks) или прочесть краткое содержание, предисловие (аннотацию), описание и ознакомиться с отзывами (комментариями) о произведении.
Перейти на страницу:

<?xml version="1.0"?>

(window.adrunTag = window.adrunTag || []).push({v: 1, el: 'adrun-4-390', c: 4, b: 390})

<JamesBondCar xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

 xmlns:xsd= "http://www.w3.org/2001/XMLSchema" xmlns="http://www.MyCompany.com">

  <TheRadio>

    <HasTweeters>true</HasTweeters>

    <HasSubWoofers>false</HasSubWoofers>

    <StationPresets>

      <double>89.3</double>

      <double>105.1</double>

      <double>97.1</double>

    </StationPresets>

    <RadioId>XF-552RR6</RadioId>

  </TheRadio>

  <IsHatchBack>false</IsHatchBack>

  <CanFly>true</CanFly>

  <CanSubmerge>false</CanSubmerge>

</JamesBondCar>

Если вы хотите указать специальное пространство имен XML, которое уточняет JamesBondCar и кодирует значения canFly и canSubmerge в виде атрибутов XML, тогда модифицируйте определение класса JamesBondCar следующим образом:

[Serializable, XmlRoot(Namespace = "http://www.MyCompany.com")]

public class JamesBondCar : Car

{

<b>  [XmlAttribute]</b>

  public bool CanFly;

<b>  [XmlAttribute]</b>

  public bool CanSubmerge;

...

}

Вот как будет выглядеть результирующий XML-документ (обратите внимание на открывающий элемент &lt;JamesBondCar&gt;):

&lt;?xml version=&quot;1.0&quot;&quot;&quot;?&gt;

&lt;JamesBondCar xmlns:xsi=&quot;http://www.w3.org/2001/XMLSchema-instance&quot;

  xmlns:xsd=&quot;http://www.w3.org/2001/XMLSchema&quot;

<b>  CanFly=&quot;true&quot; CanSubmerge=&quot;false&quot; xmlns=&quot;http://www.MyCompany.com&quot;&gt;</b>

...

&lt;/JamesBondCar&gt;

Исследуйте содержимое файла PersonData.xml:

&lt;?xml version=&quot;1.0&quot;?&gt;

(window.adrunTag = window.adrunTag || []).push({v: 1, el: 'adrun-4-390', c: 4, b: 390})

&lt;Person xmlns:xsi=http://www.w3.org/2001/XMLSchema-instance

  xmlns:xsd= &quot;http://www.w3.org/2001/XMLSchema&quot;&gt;

  &lt;IsAlive&gt;true&lt;/IsAlive&gt;

  &lt;FirstName&gt;James&lt;/FirstName&gt;

&lt;/Person&gt;

Важно отметить, что свойство PersonAge не сериализируется в XML. Это подтверждает, что сериализация XML учитывает только открытые свойства и поля.

Сериализация коллекций объектов

Теперь, когда вы видели, каким образом сохранять одиночный объект в потоке, давайте посмотрим,как сохранить набор объектов. Создайте локальную функцию, которая инициализирует список объектов JamesBondCar и сериализирует его в XML:

static void SaveListOfCarsAsXml()

{

  // Сохранить список List&lt;T&gt; объектов JamesBondCar.

  List&lt;JamesBondCar&gt; myCars = new()

    {

      new JamesBondCar{CanFly = true, CanSubmerge = true},

      new JamesBondCar{CanFly = true, CanSubmerge = false},

      new JamesBondCar{CanFly = false, CanSubmerge = true},

      new JamesBondCar{CanFly = false, CanSubmerge = false},

    };

  using (Stream fStream = new FileStream(&quot;CarCollection.xml&quot;,

    FileMode.Create, FileAccess.Write, FileShare.None))

  {

    XmlSerializer xmlFormat = new XmlSerializer(typeof(List&lt;JamesBondCar&gt;));

    xmlFormat.Serialize(fStream, myCars);

  }

  Console.WriteLine(&quot;=&gt; Saved list of cars!&quot;);

}

Наконец, добавьте следующую строку, чтобы задействовать новую функцию:

SaveListOfCarsAsXml(); 

Десериализация объектов и коллекций объектов

Десериализация XML буквально противоположна сериализации объектов (и коллекций объектов). Рассмотрим показанную далее локальную функцию для десериализации XML-разметки обратно в граф объектов. И снова обратите внимание, что тип, с которым нужно работать, должен быть передан конструктору XmlSerializer:

static T ReadAsXmlFormat&lt;T&gt;(string fileName)

{

  // Создать типизированный экземпляр класса XmlSerializer.

  XmlSerializer xmlFormat = new XmlSerializer(typeof(T));

Перейти на страницу:

Троелсен Эндрю читать все книги автора по порядку

Троелсен Эндрю - все книги автора в одном месте читать по порядку полные версии на сайте онлайн библиотеки Nice-Books.Ru.


Язык программирования C#9 и платформа .NET5 отзывы

Отзывы читателей о книге Язык программирования C#9 и платформа .NET5, автор: Троелсен Эндрю. Читайте комментарии и мнения людей о произведении.


Уважаемые читатели и просто посетители нашей библиотеки! Просим Вас придерживаться определенных правил при комментировании литературных произведений.

  • 1. Просьба отказаться от дискриминационных высказываний. Мы защищаем право наших читателей свободно выражать свою точку зрения. Вместе с тем мы не терпим агрессии. На сайте запрещено оставлять комментарий, который содержит унизительные высказывания или призывы к насилию по отношению к отдельным лицам или группам людей на основании их расы, этнического происхождения, вероисповедания, недееспособности, пола, возраста, статуса ветерана, касты или сексуальной ориентации.
  • 2. Просьба отказаться от оскорблений, угроз и запугиваний.
  • 3. Просьба отказаться от нецензурной лексики.
  • 4. Просьба вести себя максимально корректно как по отношению к авторам, так и по отношению к другим читателям и их комментариям.

Надеемся на Ваше понимание и благоразумие. С уважением, администратор Nice-Books.


Прокомментировать
Подтвердите что вы не робот:*
Подтвердите что вы не робот:*