15 Ağustos 2017 Salı

XMLSerializer İle Okuma

Giriş
Visual Studio ile XML'i okuyup yazacak sınıfı üretmek çok kolay. Öne XML kopyalanır, sonra
Menu -> Paste Special -> Paste XML as Classes
ile XML bir sınıfa çevrilir. Bu noktadan sonra aşağıdaki notlar kullanılabilir.

Tam  çalışan bir örnek şöyle:
Aşağıda okunması istenen XML var.
<?xml version="1.0" encoding="utf-8"?>
<UserData>
    <Users>
        <User>
            <Name>TestName1</Name>
            <Password>Password1</Password>
            <Level>1</Level>
        </User>
        <User>
            <Name>TestName2</Name>
            <Password>PAssword2</Password>
            <Level>2</Level>
        </User>
    </Users>
</UserData>
Bu XML'i okumak için kullanılan sınıflar şöyle
[Serializable()]
public sealed class User
{
    [XmlElement("Name")]
    public string Name { get; set; }

    [XmlElement("Password")]
    public string Password { get; set; }

    [XmlElement("Level")]
    public string Level { get; set; }
}

[XmlRoot("UserData")]
public class UserData
{
    [XmlArray("Users")]
    [XmlArrayItem("User", typeof(User))]
    public User[] Users { get; set; }
}
Şimdi sınıfların nasıl kullanıldığına bakalım.

XMLSerializer Sınıfı
XMLSerializer Sınıfı yazısına taşıdım.

1. XMLRoot Annotation
XMLRoot Annotation yazısına taşıdım.

2.XMLElement Annotation
Sınıfın property alanlarına tanımlanır. Constructor metoduna okunacak XML tag'inin ismi verilir.

3. XMLAttribute
Tag içindeki attribute alanı sınıfın alanı olarak okunur. Şöyle bir XML olsun
<whatever id="D3DCBCDA-AD61-4764-B5A1-057D654F1C26"/>
id alanını sınıfa okumak için alana şu annotation konulur.
public class RoleDTO
{
  [XmlAttribute("Id")]
  public Guid roleId { get; set; }
}

4. XMLArray Annotation
Sınıfın array olan property alanına tanımlanır. XMLArrayItem Annotation ile beraber kullanılır. Constructor metoduna okunacak XML tag'inin ismi verilir.

5. XMLArrayItem Annotation
Sınıfın array olan property alanına tanımlanır. Constructor metoduna okunacak XML tag'inin ismi verilir.


Hiç yorum yok:

Yorum Gönder