2016-04-13 18 views
-1

aşağıdaki XML serisini Nesne özniteliğini:serialize XML dizisi, ben bir nesneyi tanımlamak Nasıl

<body> 
<S1 A="1"> 
    <S2 B="1"> 
     <S3 C="1"/> 
     <S3 C="1"/> 
    </S2> 
    <S2 B="2"/> 
</S1> 
<S1 A="2"/> 

+0

Ne olduğunu tanımla? Daha spesifik olabilir misin? –

+0

, bir nesneye xml'nin nasıl serileceğini gösteren tonlarca örnektir. Biraz çaba göstermelisin. – Jonesopolis

+0

Örneğinizi iyi biçimlendirilmiş XML'de verebilir misiniz? – TVOHM

cevap

1

şiddetle XML şeması oluşturmaya yardımcı olabilir xsd.exe, kullanmak tavsiye ederim ya XDR, XML ve XSD dosyalarından veya çalışma zamanı derlemesindeki sınıflardan ortak dil çalışma zamanı sınıfları. VS Developer Command Prompt

  • Tip xsd.exe PathToXmlFile.xml /outputdir:OutputDir ve Enter basın

    1. Açık - Bu *.xsd dosyayı
    2. Tip xsd.exe PreviouslyCreatedXsdFile.xsd /classes /outputdir:OutputDir üretmek ve Enter basın - bu *.cs dosyası (sınıf tanımı) üretecektir.

    Hepsi bu kadar!

    Dene!

  • 1

    bu deneyin ....

    usings .....

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

    Sınıflar .....

    [XmlRoot(ElementName = "S3")] 
    public class S3 
    { 
        [XmlAttribute(AttributeName = "C")] 
        public string C { get; set; } 
    } 
    
    [XmlRoot(ElementName = "S2")] 
    public class S2 
    { 
        [XmlElement(ElementName = "S3")] 
        public List<S3> S3 { get; set; } 
        [XmlAttribute(AttributeName = "B")] 
        public string B { get; set; } 
    } 
    
    [XmlRoot(ElementName = "S1")] 
    public class S1 
    { 
        [XmlElement(ElementName = "S2")] 
        public List<S2> S2 { get; set; } 
        [XmlAttribute(AttributeName = "A")] 
        public string A { get; set; } 
    } 
    
    [XmlRoot(ElementName = "body")] 
    public class Body 
    { 
        [XmlElement(ElementName = "S1")] 
        public List<S1> S1 { get; set; } 
    } 
    

    Kod .....

     string strXML = File.ReadAllText("xml.xml"); 
         byte[] bufXML = ASCIIEncoding.UTF8.GetBytes(strXML); 
         MemoryStream ms1 = new MemoryStream(bufXML); 
    
         // Deserialize to object 
         XmlSerializer serializer = new XmlSerializer(typeof(Body)); 
         try 
         { 
          using (XmlReader reader = new XmlTextReader(ms1)) 
          { 
           Body deserializedXML = (Body)serializer.Deserialize(reader); 
    
          }// put a break point here and mouse-over deserializedXML…. 
         } 
         catch (Exception ex) 
         { 
          throw; 
         } 
    

    XML'iniz .....

    <body> 
    <S1 A="1"> 
        <S2 B="1"> 
         <S3 C="1"/> 
         <S3 C="1"/> 
        </S2> 
        <S2 B="2"/> 
    </S1> 
    <S1 A="2"/> 
    </body> 
    

    Bitiş etiketini ekledim ..... XML'inizi xml.xml adlı uygulama oluşturma klasöründeki bir dosyadan bir dizeye okuyorum ... XML dizgisini bir yerden almanız gerekir else veya xml.xml dosyasını oluştur ve yukarıdaki kod için XML'inizi kaydet