개체 목록을 사용한 역 직렬화

다니엘 부처

하나의 XML 파일에 여러 개체를 저장하고 읽으려고합니다.

Serialize 기능이 기존 목록에서 작동하지 않지만 이유를 모르겠습니다. 나는 이미 그것을 컴파일하려고 시도했지만 메소드에 객체 참조가 필요하다는 오류가 발생합니다.

Program.cs :

    class Program
    {
        static void Main(string[] args)
        {
            List<Cocktail> lstCocktails = new List<Cocktail>();
            listCocktails.AddRange(new Cocktail[]
            {
                new Cocktail(1,"Test",true,true,
                new Cocktail(1, "Test4", true, true, 0)
        });


            Serialize(lstCocktails);

        }

        public void Serialize(List<Cocktail> list)
        {
            XmlSerializer serializer = new XmlSerializer(typeof(List<Cocktail>));
            using (TextWriter writer = new StreamWriter(@"C:\Users\user\Desktop\MapSample\bin\Debug\ListCocktail.xml"))
            {
                serializer.Serialize(writer, list);
            }
        }

        private void DiserializeFunc()
        {
            var myDeserializer = new XmlSerializer(typeof(List<Cocktail>));
            using (var myFileStream = new FileStream(@"C:\Users\user\Desktop\MapSample\bin\Debug\ListCocktail.xml", FileMode.Open))
            {
                ListCocktails = (List<Cocktail>)myDeserializer.Deserialize(myFileStream);
            }
        }

Cocktail.cs :

    [Serializable()]
    [XmlRoot("locations")]
    public class Cocktail
    {

        [XmlElement("id")]
        public int CocktailID { get; set; }
        [XmlElement("name")]
        public string CocktailName { get; set; }
        [XmlElement("alc")]
        public bool alcohol { get; set; }
        [XmlElement("visible")]
        public bool is_visible { get; set; }
        [XmlElement("counter")]
        public int counter { get; set; }
        private XmlSerializer ser;

        public Cocktail() {
            ser = new XmlSerializer(this.GetType());
        }
        public Cocktail(int id, string name, bool alc,bool vis,int count)
        {
            this.CocktailID = id;
            this.CocktailName = name;
            this.alcohol = alc;
            this.is_visible = vis;
            this.counter = count;
        }
    }
}

나는 또한 DiserializeFunc ()로 뭔가 엉망이라고 생각합니다.

여 베넷

Cocktail 클래스를 올바르게 구현하는 데 매우 가깝지만 목록을 직렬화하는 방법에 대해 혼란스러워하는 것 같습니다. Cocktail 객체 클래스의 구현은 완전히 괜찮습니다. 목록 관련 함수 만 제거하면됩니다.

using System;
using System.Xml.Serialization;

namespace Serialization_Help
{
    [Serializable()]
    [XmlRoot("locations")]
    public class Cocktail
    {

        [XmlElement("id")]
        public int CocktailID { get; set; }
        [XmlElement("name")]
        public string CocktailName { get; set; }
        [XmlElement("alc")]
        public bool alcohol { get; set; }
        [XmlElement("visible")]
        public bool is_visible { get; set; }
        [XmlElement("counter")]
        public int counter { get; set; }
        public Cocktail() {

        }
        public Cocktail(int id, string name, bool alc, bool vis, int count)
        {
            this.CocktailID = id;
            this.CocktailName = name;
            this.alcohol = alc;
            this.is_visible = vis;
            this.counter = count;
        }
    }
}

이제 새 함수에서 목록을 직접 직렬화하려고합니다.

using System.Collections.Generic;
using System.IO;
using System.Xml.Serialization;

namespace Serialization_Help
{
    class Program {
        static void Main(string[] args) {
            List<Cocktail> list = new List<Cocktail> {
                new Cocktail(01, "rum and coke", true, true, 5),
                new Cocktail(02, "water on the rocks", false, true, 3)
            };
            Serialize(list);
            List<Cocktail> deserialized = DiserializeFunc();
        }

        public static void Serialize(List<Cocktail> list) {

            XmlSerializer serializer = new XmlSerializer(typeof(List<Cocktail>));
            using (TextWriter writer = new StreamWriter(Directory.GetCurrentDirectory() + @"\ListCocktail.xml")) serializer.Serialize(writer, list);
        }

        private static List<Cocktail> DiserializeFunc() {
            var myDeserializer = new XmlSerializer(typeof(List<Cocktail>));
            using (var myFileStream = new FileStream(Directory.GetCurrentDirectory() + @"\ListCocktail.xml", FileMode.Open)) return (List<Cocktail>)myDeserializer.Deserialize(myFileStream);
        }
    }
}

이렇게하면 다음 .xml 출력이 올바르게 인쇄됩니다.

<?xml version="1.0" encoding="utf-8"?>
<ArrayOfCocktail xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <Cocktail>
    <id>1</id>
    <name>rum and coke</name>
    <alc>true</alc>
    <visible>true</visible>
    <counter>5</counter>
  </Cocktail>
  <Cocktail>
    <id>2</id>
    <name>water on the rocks</name>
    <alc>false</alc>
    <visible>true</visible>
    <counter>3</counter>
  </Cocktail>
</ArrayOfCocktail>

파일에 대한 표준 안전 또는 null 검사의 구현을 제공하지 않았습니다. 당신은 파일을 사용하여 자신을 존재하는지 확인해야합니다 File.Exists(...) (File.Exists 구현 여기를 참조) 올바른 구현 trycatch는 오류 outut / 직렬화 또는 입력으로 실행하는 경우 경우 어떤 코드가해야 할 선택됩니다.

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

Jackson을 사용하여 역 직렬화하는 동안 목록 속성의 개체 목록 그룹화

분류에서Dev

사용자 지정 XmlSerialization을 사용하여 복잡한 개체 역 직렬화

분류에서Dev

COM을 사용하여 PHP에서 .Net 개체 역 직렬화

분류에서Dev

변수 이름을 사용하여 개체로 역 직렬화

분류에서Dev

목록 속성을 사용하여 JSON을 객체로 역 직렬화

분류에서Dev

개조 : GSON 사용자 지정 자식 목록 역 직렬화

분류에서Dev

개조 : GSON 사용자 지정 자식 목록 역 직렬화

분류에서Dev

json 문자열을 .NET 개체 목록으로 역 직렬화

분류에서Dev

값 목록을 C # 개체로 역 직렬화하는 방법

분류에서Dev

JSON을 C # 개체 목록으로 역 직렬화

분류에서Dev

C # XML을 개체 목록으로 역 직렬화

분류에서Dev

복잡한 XML을 개체로 역 직렬화

분류에서Dev

복잡한 JSON 개체 역 직렬화

분류에서Dev

JSON을 C # 개체로 역 직렬화

분류에서Dev

XML을 개체로 역 직렬화

분류에서Dev

JSON 목록을 C #의 개체 목록으로 역 직렬화 할 수 없음

분류에서Dev

GSON을 사용하여 평면화 된 JSON 키를 적절한 개체로 역 직렬화

분류에서Dev

Spring 부팅에서 Jackson을 사용하여 날짜 개체 역 직렬화

분류에서Dev

컨테이너없이 JSON.NET을 사용하여 개체 역 직렬화

분류에서Dev

현재 JSON 개체를 역 직렬화 할 수 없습니다. 그룹 열을 사용하여 현재 JSON 개체를 역 직렬화 할 수 없습니다.

분류에서Dev

Import-CliXml을 사용하여 사용자 지정 클래스 개체의 일반 목록을 역 직렬화하려면 어떻게해야합니까?

분류에서Dev

C #의 목록이있는 개체에 XML 역 직렬화

분류에서Dev

JSON 개체를 .Net 목록으로 역 직렬화 (C #)

분류에서Dev

spray-json을 사용한 Scala 케이스 객체의 JSON 역 직렬화

분류에서Dev

개체 목록을 다른 컬렉션 형식으로 역 직렬화

분류에서Dev

XML 파일을 개체 목록으로 역 직렬화하는 방법

분류에서Dev

자바 객체에 datetime을 사용하여 JSON 역 직렬화

분류에서Dev

GSON을 사용하여 객체의 JSON 배열 역 직렬화

분류에서Dev

Gson을 사용하여 다른 개체 내부의 개체 배열 역 직렬화

Related 관련 기사

  1. 1

    Jackson을 사용하여 역 직렬화하는 동안 목록 속성의 개체 목록 그룹화

  2. 2

    사용자 지정 XmlSerialization을 사용하여 복잡한 개체 역 직렬화

  3. 3

    COM을 사용하여 PHP에서 .Net 개체 역 직렬화

  4. 4

    변수 이름을 사용하여 개체로 역 직렬화

  5. 5

    목록 속성을 사용하여 JSON을 객체로 역 직렬화

  6. 6

    개조 : GSON 사용자 지정 자식 목록 역 직렬화

  7. 7

    개조 : GSON 사용자 지정 자식 목록 역 직렬화

  8. 8

    json 문자열을 .NET 개체 목록으로 역 직렬화

  9. 9

    값 목록을 C # 개체로 역 직렬화하는 방법

  10. 10

    JSON을 C # 개체 목록으로 역 직렬화

  11. 11

    C # XML을 개체 목록으로 역 직렬화

  12. 12

    복잡한 XML을 개체로 역 직렬화

  13. 13

    복잡한 JSON 개체 역 직렬화

  14. 14

    JSON을 C # 개체로 역 직렬화

  15. 15

    XML을 개체로 역 직렬화

  16. 16

    JSON 목록을 C #의 개체 목록으로 역 직렬화 할 수 없음

  17. 17

    GSON을 사용하여 평면화 된 JSON 키를 적절한 개체로 역 직렬화

  18. 18

    Spring 부팅에서 Jackson을 사용하여 날짜 개체 역 직렬화

  19. 19

    컨테이너없이 JSON.NET을 사용하여 개체 역 직렬화

  20. 20

    현재 JSON 개체를 역 직렬화 할 수 없습니다. 그룹 열을 사용하여 현재 JSON 개체를 역 직렬화 할 수 없습니다.

  21. 21

    Import-CliXml을 사용하여 사용자 지정 클래스 개체의 일반 목록을 역 직렬화하려면 어떻게해야합니까?

  22. 22

    C #의 목록이있는 개체에 XML 역 직렬화

  23. 23

    JSON 개체를 .Net 목록으로 역 직렬화 (C #)

  24. 24

    spray-json을 사용한 Scala 케이스 객체의 JSON 역 직렬화

  25. 25

    개체 목록을 다른 컬렉션 형식으로 역 직렬화

  26. 26

    XML 파일을 개체 목록으로 역 직렬화하는 방법

  27. 27

    자바 객체에 datetime을 사용하여 JSON 역 직렬화

  28. 28

    GSON을 사용하여 객체의 JSON 배열 역 직렬화

  29. 29

    Gson을 사용하여 다른 개체 내부의 개체 배열 역 직렬화

뜨겁다태그

보관