20 Haziran 2016 Pazartesi

XElement Sınıfı

Giriş
Bu sınıf XDocument sınıfına çok benzer hatta bir çok şeyi ikisi de yapabilir.

Alanlar
HasElements Alanı
Düğümün alt düğümü olup olmadığını belirtir. Şöyle yaparız.
XElement element = ...
if element.HasElements {...}
Name Alanı
XName tipindendir. Tag ismini süslü parantez içinde verir.
XElement element = ...;
element.Name
Eğer süslü parantez olmadan almak istersek şöyle yaparız.
XElement element = ...;
element.Name.LocalName
Value Alanı
Tag içinde kalan metni verir. Şöyle yaparız.
element.Value
Metodlar
Constructor - XName
Şöyle yaparız.
XElement el = new XElement("CapacityIssues");
XML şöyledir.
<?xml version="1.0" encoding="utf-16"?>
<CapacityIssues xmlns:xsd="..." xmlns:xsi="...">
...
</CapacityIssues>
Constructor - XName + Object
Şöyle yaparız.
XElement el = new XElement("ID", "4123567")
XML şöyledir.
<ID>4123567</ID>
Elimizde bir liste olsun
List<Student> students = new List<Student>() {...};
Bu listeyi XML'e şöyle çeviririz.
XElement element = 
  new XElement("Students",
    (from student in students 
      select new XElement("Student",
        new XElement("ID", student.ID),
        new XElement("Name",student.Name),
        new XElement("Address", student.Address),
        new XElement("Phone",student.Phone)
       )
     )
  ); 
Şöyle bir sonuç çıkar
<Students>
 <Student><ID>...</ID><Name>...</Name>...</Student>
<Students>

Add metodu - XAttribute
Düğüme yeni bir Attribute ekler. Şöyle yaparız.
XElement el = ...;
el.Add(new XAttribute("ServerGroup", "A"));
Şöyle bir XML elde ederiz.
<TrackingDetails ServerGroup="A">
...
</TrackingDetails>
Add metodu - XElement
Alt düğüm ekler. Şöyle yaparız.
XElement el = ...;
el.Add(new XAttribute("FaultCode", "111"));
Şöyle bir XML elde ederiz.
<TrackingDetails ServerGroup="A">
  <ID>4123567</ID>
  ...
</TrackingDetails>
Attribute metodu
Elimizde şöyle bir XML olsun.
<ext-link xlink:href="..." ext-link-type="..." xmlns:xlink="...">...</ext-link>
xlink ile başlayan kısım namespace prefix. XName ile şöyle yaparız. Attribute ismi olarak href + namespace veririz.
var strValue = (string)xeTmp.Attribute(XName.Get("href", "..."));
Ya da şöyle yaparız.
var strValue = (string)xeTmp.Attribute(((XNamespace)"...") + "href");
Elements metodu - XNamespace
Elimizde şöyle bir xml olsun.
string xmlContent = "<ArrayOfstring
 xmlns:i="http://www.23.org/2001/XMLSchema-instance" 
 xmlns="http://schemas.microsft.com/2003/10/SerializationArrays><
 string>....</string></ArrayOfstring>";
Namespace ile şöyle kullanılır.
XNamespace ns = "http://schemas.microsft.com/2003/10/SerializationArrays";
XDocument doc = ...;
var list = doc.Root.Elements(ns + "string")
Load metodu
Şöyle yaparız. Bu metod XDocument sınıfında da mevcut.
var root = XElement.Load(xmlFile);
ReadFrom metodu
XNode Sınıfı yazısına bakınız.

ReplaceNodes metodu
Şöyle yaparız.
root.ReplaceNodes(new XElement("tests", root.Elements("test")));
Save metodu
Şöyle yaparız. Bu metod XDocument sınıfında da mevcut.
root.Save(FileName + ".xml");




Hiç yorum yok:

Yorum Gönder