Giriş
Şu satırı dahil ederiz.
XmlDocument
XDocument
XmlTextReader
XmlSerializer
XMl Nedir
XML kısaltması sonunda Language kelimesi geçiyor. XML'in dil olup olmadığı tartışılabilir ancak L kısaltması tarihsel olarak mevcut.
XML'in atası 1970'lerde GML (Goldfarb, Mosher and Lorie) idi. Daha sonra SGML (Standardized General Markup Language) oldu. Nihayetinden XML olarak karşımıza çıktı.
Descendants metodu
IEnumerable<XElement> listesi döner. Düğümün altındaki tüm kademelerdeki düğümleri verir. Şöyle yaparız.
Şöyle yaparız.
Linq ile kullanılabilir. Düğümün hemen altındaki düğümleri verir. En son "patch" düğümünü şöyle alırız.
Şöyle yaparız.
Belirtilen XML dosyasını yükler. Bu metod XElement sınıfında da mevcut. Şöyle yaparız.
Örnek
Şöyle yaparız.
Örnek
LoadOptions kullanarak şöyle yaparız.
Örnek ver
Parse metodu
Verilen XML string'ini parse eder. Şöyle yaparız.
XML'deki ilk düğüme erişmemizi sağlar. Bir XElement nesnesi döner.
Şu satırı dahil ederiz.
using System.Xml.Linq;
.Net ile XML ile çalışmak için bir sürü sınıf geliyor. Bunlar şöyle.XmlReaderXmlDocument
XDocument
XmlTextReader
XmlSerializer
XMl Nedir
XML kısaltması sonunda Language kelimesi geçiyor. XML'in dil olup olmadığı tartışılabilir ancak L kısaltması tarihsel olarak mevcut.
XML'in atası 1970'lerde GML (Goldfarb, Mosher and Lorie) idi. Daha sonra SGML (Standardized General Markup Language) oldu. Nihayetinden XML olarak karşımıza çıktı.
Descendants metodu
IEnumerable<XElement> listesi döner. Düğümün altındaki tüm kademelerdeki düğümleri verir. Şöyle yaparız.
IEnumerable<XElement> nodes = doc.Descendants("queryString"));
Şöyle yaparız.List<XElement> lat = doc.Descendants("lat").ToList();
DescendantNodes metoduŞöyle yaparız.
foreach (var node in doc.DescendantNodes()) {...}
Elements metoduLinq ile kullanılabilir. Düğümün hemen altındaki düğümleri verir. En son "patch" düğümünü şöyle alırız.
<root>
<patch></patch>
.
.
<patch></patch>
</root>
XDocument doc = XDocument.Load("yourfile.xml");
XElement root = doc.Root;
Console.WriteLine(root.Elements("patch").Last());
Elements arka arkaya çağrılarak Descendents gibi kullanılabilir. Elimizde şöyle bir XML olsun.<?xml version="1.0" encoding="UTF-8" ?>
<Car>
<Location name = "somewhere">
<Type type="itstype">
<Price>135</Price>
</Type>
</Location>
<Location name = "somewhere">
<Type type="itstype">
<Price>250</Price>
</Type>
</Location>
</Car>
En yüksek ücreti şöyle buluruz. Önce Elements ile Location düğümleri seçilir. Her Location altındaki Type düğümü seçilir. Her type için Price düğümü seçilir ve en yüksek değer bulunur.public int HighestPrice(string xmlFilePath)
{
var doc = XDocument.Load(xmlFilePath);
var cars = doc.Root.Elements("Location").Select(e => e.Element("Type"));
return cars.Max(c => int.Parse(c.Element("Price").Value));
}
GetDefaultNamespace metoduŞöyle yaparız.
XNamespace ns = xdoc.GetDefaultNamespace();
Load metodu - pathBelirtilen XML dosyasını yükler. Bu metod XElement sınıfında da mevcut. Şöyle yaparız.
var doc = XDocument.Load("D:/myXml.xml");
Load metodu - streamÖrnek
Şöyle yaparız.
XDocument xdoc = XDocument.Load(stream);
Load metodu - stream + LoadOptionsÖrnek
LoadOptions kullanarak şöyle yaparız.
public static async Task<XDocument> LoadAsync(String path,
LoadOptions loadOptions = LoadOptions.PreserveWhitespace)
{
return Task.Run(()=>{
using (var stream = File.OpenText(path))
{
return XDocument.Load(stream, loadOptions);
}
});
}
LoadAsync metoduÖrnek ver
Parse metodu
Verilen XML string'ini parse eder. Şöyle yaparız.
var doc = XDocument.Parse(@"<CAR>...</CAR>");
Root AlanıXML'deki ilk düğüme erişmemizi sağlar. Bir XElement nesnesi döner.
XElement root = doc.Root;
Örnek
Elimizde şöyle bir XML olsun ve tüm name değerlerine erişmek isteyelim.
<?xml version="1.0" encoding="UTF-8"?>
<report name="ReportName">
<agency name="agency1">
<office name="office1"></office>
<office name="office2"></office>
<office name="office3"></office>
</agency>
<agency name="agency2">
<office name="office1">
<agent name="agent Amy"></agent>
<address name="address line"></address>
</office>
<office name="office2"></office>
<office name="office3"></office>
</agency>
<agency name="agency3">
<office name="office1">
<agent name="agent Bettie">
<subagent name="sub-agent bob">
<phone name="456-789-1230"></phone>
</subagent>
<subagent name="sub-agent billy"></subagent>
</agent>
<address name="address line">
<faxnumber name="1234567890"></faxnumber>
</address>
</office>
<office name="office2"></office>
<office name="office3"></office>
</agency>
</report>
Şöyle yaparız.
var names =
XDocument
.Parse(xml)
.Root
.Descendants()
.Select(x => x.Attribute("name").Value)
.ToList();
Save metodu
Şöyle yaparız. Bu metod XElement sınıfında da mevcut.var doc = XDocument.Load(xmlFile);
doc.Root.ReplaceNodes(...);
doc.Save(...);
Hiç yorum yok:
Yorum Gönder