XML - jak korzystać z pliku dodanego do solucji

0

Cześć
Muszę zdeserializować plik xml, stworzyć model który będzie go odzwierciedlał i do listy obiketów za pomocą metody generycznej i wypisać wartości do listy obiektów, mam kilka podstawowych pytań.

Jak odnieść się do pliki xml dodanego do solucji (np w folderze XML)
Przez model rozumiem getery i setery dla powyższego xmla (dobrze myśle?)

Czy w przypadku przykladowo takiego xmla (zalacznik):

Customers i Orders (parenty) beda osobnymi metodami czy to jak to sobie rozplanuje nie ma znaczenia?

0

XML może zawierać dane, nie bardzo wiem jak chcesz z nich zrobić metody. Możesz mieć metodę czytającą różne typy danych z pliku - i o to chyba chodzi w zadaniu.

0

Chodzi mi o to że jeśli jakiś node jest parentem dla 5 innych to robiąc dla xmlki propercje childy i parenty beda inaczej traktowane?
W sensie jest np node customers ktory jest parentem dla setu 5 cusotmerow ktorzy maja np 5 danych o sobie

0
<?xml version="1.0" encoding="utf-8"?>  
<Root xmlns="http://www.adventure-works.com">  
  <Customers>  
    <Customer CustomerID="GREAL">  
      <CompanyName>Great Lakes Food Market</CompanyName>  
      <ContactName>Howard Snyder</ContactName>  
      <ContactTitle>Marketing Manager</ContactTitle>  
      <Phone>(503) 555-7555</Phone>  
      <FullAddress>  
        <Address>2732 Baker Blvd.</Address>  
        <City>Eugene</City>  
        <Region>OR</Region>  
        <PostalCode>97403</PostalCode>  
        <Country>USA</Country>  
      </FullAddress>  
    </Customer>  
  </Customers>  
  <Orders>    
    <Order>  
      <CustomerID>LETSS</CustomerID>  
      <EmployeeID>4</EmployeeID>  
      <OrderDate>1998-02-12T00:00:00</OrderDate>  
      <RequiredDate>1998-03-12T00:00:00</RequiredDate>  
      <ShipInfo ShippedDate="1998-02-13T00:00:00">  
        <ShipVia>2</ShipVia>  
        <Freight>90.97</Freight>  
        <ShipName>Let's Stop N Shop</ShipName>  
        <ShipAddress>87 Polk St. Suite 5</ShipAddress>  
        <ShipCity>San Francisco</ShipCity>  
        <ShipRegion>CA</ShipRegion>  
        <ShipPostalCode>94117</ShipPostalCode>  
        <ShipCountry>USA</ShipCountry>  
      </ShipInfo>  
    </Order>  
  </Orders>  
</Root>  

wklejam zgodnie z prośbą

przede wszystkim chodzi mi o to jak odniesc sie do niego jak dodam go do solucji jako plik i jak zbudowac poprawny model, metode generyczna i deserializacje zbuduje sam

2

Hej,

  1. Jeżeli ustawisz we właściwościach pliku XML Build Action jako "Embeded Resource" to potem możesz w kodzie pobrać zawartość za pomocą "GetManifestResourceStream" na Assembly z tym plikiem. Tylko trzeba pamiętać o pełnej nazwie (łącznie z namespacem).

  2. Teraz model. Możesz zrobić ręcznie, ale w Visual Studio jest fajna opcja: "Menu Edit > Paste Special > Paste XML as Classes" i już :)

  3. A deserializacja z zawartości pliku z punktu 1 możesz zrobić za pomocą XmlSerializer<Root>

0

Hej ponownie :) użyłem deserializatora jak poniżej z modelu zrobionego jako "Paste Special", xml dodane jako załącznik (długi ), podpowie ktoś jak mogę teraz wyświetlić efekt deserializacji jako liste wartości objektów w konsoli ?


namespace ConsoleApplication2
{
    public class Program
    {
        public static object deserializer()
        {
            XmlSerializer serializer = new XmlSerializer(typeof(Model));
            object ObjectsList = null;
            using (StreamReader stream = new StreamReader(@"C:\Users\xxx\Downloads\xmlExample.xml"))
            {
                ObjectsList = serializer.Deserialize(stream);
            }
            return ObjectsList.ToString();
        }

        static void Main(string[] args)
        {
        }
    }
}

0

Np możesz zrobić tak.

       public static Root deserializer()
        {
            XmlSerializer serializer = new XmlSerializer(typeof(Root));
            Root ObjectsList = null;
            using (StreamReader stream = new StreamReader(@"C:\Users\xxx\Downloads\xmlExample.xml"))
            {
                ObjectsList = (Root) serializer.Deserialize(stream);
            }
            return ObjectsList;
        }

 static void Main(string[] args)
        {
         var data =   deserializer();

            foreach (var item in data.Customers)
            {
                Console.WriteLine(item.Phone);
            }

            Console.ReadKey();
        }

1 użytkowników online, w tym zalogowanych: 0, gości: 1