﻿
{"id":772,"date":"2012-05-28T19:38:24","date_gmt":"2012-05-28T19:38:24","guid":{"rendered":"http:\/\/www.gencayyildiz.com\/blog\/?p=772"},"modified":"2012-05-28T19:55:55","modified_gmt":"2012-05-28T19:55:55","slug":"c-sharp-xpath-ile-xml-okumak","status":"publish","type":"post","link":"https:\/\/www.gencayyildiz.com\/blog\/c-sharp-xpath-ile-xml-okumak\/","title":{"rendered":"C Sharp XPath \u0130le XML Okumak"},"content":{"rendered":"<div id=\"fb-root\"><\/div>\n<p>Genel anlamda ben XPath s\u0131n\u0131f\u0131yla XML okumaya, XML sorgulama diyorum.\u00c7\u00fcnk\u00fc XPath s\u0131n\u0131f\u0131yla belirli kriterlere g\u00f6re se\u00e7im yap\u0131yoruz.E\u011fer XPath s\u0131n\u0131f\u0131ndan yararlanmak istiyorsak,projemize System.Xml.XPath namespaceini eklememiz gerekiyor.<br \/>\n<!--more--><br \/>\n\u00d6ncelikle \u015fuanda \u00e7al\u0131\u015ft\u0131\u011f\u0131m projenin dizininde &#8220;bin\/debug\/Personeller.xml&#8221; dosyas\u0131 mevcuttur.\u00c7al\u0131\u015fmalar\u0131m\u0131 bu XML dosyas\u0131 \u00fczerinde yapaca\u011f\u0131m.&#8221;Personeller.xml&#8221; dosyas\u0131na ula\u015fmak istiyorsan\u0131z, \u00f6nceki yaz\u0131lar\u0131mdan esinlenerek Northwind&#8217;in Personeller tablosunu XML formatta elde etmeniz yeterlidir.<\/p>\n<p>\u00d6ncelikle Personeller root unun i\u00e7indeki Personel node \u0131ndaki, Adi elementinin de\u011ferlerini okuyal\u0131m.<\/p>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\nXPathDocument XMLDokuman = new XPathDocument(&quot;Personeller.xml&quot;);\r\n\/\/XPathDocument, do\u011frudan XML dosyas\u0131n\u0131 \u00e7eker.\r\nXPathNavigator nav = XMLDokuman.CreateNavigator();\r\n\/\/XMLDokuman nesnesi i\u00e7indeki XML dosyas\u0131n\u0131n i\u00e7inde gezinebilmemiz amac\u0131yla(XPath komutlar\u0131n\u0131 kullanarak) CreateNavigator metodu ile bir navigator olu\u015fturduk.Bu sayede, XML dosyas\u0131n\u0131n root elementi nedir, hangi attributlar vard\u0131r, nodelar nelerdir vs. gibi bilgiler nav XPathNavigator tipinden nav nesnesine y\u00fcklenmi\u015f olur.Bir nevi XML dosyas\u0131n\u0131n \u015femas\u0131 elde edilmi\u015ftir.\r\n\/\/XPathNavigator nesnesi, XPath komutlar\u0131n\u0131 kullanarak XML dosyas\u0131 i\u00e7inde gezinmemizi sa\u011flayan metodlar bar\u0131nd\u0131r\u0131r.XPath komutlar\u0131n\u0131 kullanarak XML nodelar i\u00e7inde istedi\u011fimiz node dan istedi\u011fimiz node a z\u0131plamalar yapabiliriz.\r\nXPathNodeIterator ni = nav.Select(&quot;Personeller\/Personel\/Adi&quot;);\r\n\/\/Personeller\/Personel\/Adi(Bu bir XPath komutudur.)\r\n\/\/Personeller root elementinin i\u00e7indeki Personel elementi i\u00e7indeki Adi elementinde gezin anlam\u0131na gelmektedir.\r\n\r\nwhile (ni.MoveNext())\r\n{\r\n\/\/MoveNext metodu ile nodelar\u0131 teker teker dola\u015f\u0131r\u0131z.\r\n\/\/ni nesnesi i\u00e7indeki XPath komutu ile se\u00e7ilmi\u015f olan nodelar\u0131 teker teker dolan\u0131r.\r\nMessageBox.Show(ni.Current.Name + &quot; &quot; + ni.Current.Value + &quot; &quot; + ni.Current.NodeType);\r\n\/\/Current, o anda aktif olan node un \u00f6zelliklerini verir.\r\n}\r\n<\/pre>\n<p>Yukar\u0131daki kod blo\u011funu derleyip \u00e7al\u0131\u015ft\u0131rd\u0131\u011f\u0131m\u0131z zaman, mesaj kutusunda &#8220;Adi&#8221; elementinin veri ve tipinin geldi\u011fini g\u00f6receksiniz.<\/p>\n<hr \/>\n<p>Personeller root unun i\u00e7indeki Personel node \u0131ndaki, Notlar elementinin de\u011ferlerini okuyal\u0131m.<\/p>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\n            XPathDocument XMLDokuman = new XPathDocument(&quot;Personeller.xml&quot;);\r\n            XPathNavigator nav = XMLDokuman.CreateNavigator();\r\n            XPathNodeIterator ni = nav.Select(&quot;Personeller\/Personel\/Notlar&quot;);\r\n            while (ni.MoveNext())\r\n            {\r\n                MessageBox.Show(ni.Current.Value);\r\n            }\r\n<\/pre>\n<p>Yukar\u0131daki kod blo\u011funu derleyip \u00e7al\u0131\u015ft\u0131r\u0131rsan\u0131z e\u011fer, mesaj kutusunda s\u0131rayla Notlar\u0131n de\u011ferlerini g\u00f6receksiniz.<\/p>\n<p>Buraya kadar dikkat ettiyseniz, bir elementin de\u011ferini ar\u0131yorsak, s\u00fcrekli ana nodelar aras\u0131nda d\u00f6nerek, arad\u0131\u011f\u0131m\u0131z isimdeki elementin de\u011ferlerini getirdi.Halbuki ben, bir ana node i\u00e7indeki b\u00fct\u00fcn elementlerin de\u011ferini almak istiyorum.<br \/>\n\u0130\u015fte bunuda a\u015fa\u011f\u0131daki gibi yapabiliriz.<\/p>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\n            XPathDocument XMLDokuman = new XPathDocument(&quot;Personeller.xml&quot;);\r\n            XPathNavigator nav = XMLDokuman.CreateNavigator();\r\n            XPathNodeIterator ni = nav.Select(&quot;Personeller\/Personel\/PersonelID&quot;);\r\n\r\n            while (ni.MoveNext())\r\n            {\r\n                string PersonelBilgileri = &quot;&quot;;\r\n                PersonelBilgileri += ni.Current.Value + Environment.NewLine;\r\n                ni.Current.MoveToNext();\r\n                \/\/MoveToNext : ayn\u0131 node i\u00e7inde bir sonraki elemente ge\u00e7er.\r\n                PersonelBilgileri += ni.Current.Value + Environment.NewLine;\r\n                ni.Current.MoveToNext();\r\n                PersonelBilgileri += ni.Current.Value + Environment.NewLine;\r\n                ni.Current.MoveToNext();\r\n                PersonelBilgileri += ni.Current.Value + Environment.NewLine;\r\n                MessageBox.Show(PersonelBilgileri);\r\n            }\r\n<\/pre>\n<p>G\u00f6rd\u00fc\u011f\u00fcn\u00fcz gibi bir node \u0131n i\u00e7indeki elementlerde istedi\u011fim kadar gezinebiliyorum.<\/p>\n<hr \/>\n<p>\u015eimdide baz\u0131 \u015fartlara uyan nodelar\u0131n, baz\u0131 elementlerini getirelim.\u00d6rn;<\/p>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\n            XPathDocument XMLDokuman = new XPathDocument(&quot;Personeller.xml&quot;);\r\n            XPathNavigator nav = XMLDokuman.CreateNavigator();\r\n            XPathNodeIterator ni = nav.Select(&quot;Personeller\/Personel&#x5B;Ulke]\/Adi&quot;);\r\n            \/\/Personeller\/Personel&#x5B;Ulke]\/Adi : Personeller rootunun Personel node d\u0131nda,Ulke olan personellerin Adi ni getirir.\r\n            while (ni.MoveNext())\r\n            {\r\n                MessageBox.Show(ni.Current.Value);\r\n            }\r\n<\/pre>\n<p>Attribute&#8217;e g\u00f6re sorgulayal\u0131m.<\/p>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\n            XPathDocument XMLDokuman = new XPathDocument(&quot;Personeller.xml&quot;);\r\n            XPathNavigator nav = XMLDokuman.CreateNavigator();\r\n            XPathNodeIterator ni = nav.Select(&quot;Personeller\/Personel&#x5B;@NO=2]\/Adi&quot;);\r\n            \/\/Personeller\/Personel&#x5B;@NO=2]\/Adi : E\u011fer Attribute u 2 olan varsa getirir.\r\n            \/\/E\u011fer ba\u015f\u0131nda @ i\u015fareti varsa onun Attribute oldu\u011funu alg\u0131lar.\r\n            MessageBox.Show(ni.Current.Value);\r\n<\/pre>\n<p>Elementi, de\u011ferine g\u00f6re sorgulayal\u0131m.<\/p>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\n            XPathDocument XMLDokuman = new XPathDocument(&quot;Personeller.xml&quot;);\r\n            XPathNavigator nav = XMLDokuman.CreateNavigator();\r\n            XPathNodeIterator ni = nav.Select(&quot;Personeller\/Personel&#x5B;PersonelID=10]\/Adi&quot;);\r\n            \/\/PersonelID node u 10 olan\u0131 getirir.\r\n            while (ni.MoveNext())\r\n            {\r\n                MessageBox.Show(ni.Current.Value);\r\n            }\r\n<\/pre>\n<p>Belirli say\u0131sal aral\u0131\u011fa g\u00f6re sorgu.<\/p>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\n            XPathDocument XMLDokuman = new XPathDocument(&quot;Personeller.xml&quot;);\r\n            XPathNavigator nav = XMLDokuman.CreateNavigator();\r\n            XPathNodeIterator ni = nav.Select(&quot;Personeller\/Personel&#x5B;PersonelID&gt;=1 and PersonelID            while (ni.MoveNext())\r\n            {\r\n                MessageBox.Show(ni.Current.Value);\r\n            }\r\n<\/pre>\n<p>Bu yaz\u0131mda bundan ibaret..<br \/>\nSonraki yaz\u0131lar\u0131mda g\u00f6r\u00fc\u015fmek \u00fczere..<br \/>\n\u0130yi \u00e7al\u0131\u015fmalar \ud83d\ude42<\/p>\n<!-- AddThis Advanced Settings generic via filter on the_content --><!-- AddThis Share Buttons generic via filter on the_content -->","protected":false},"excerpt":{"rendered":"<p>Genel anlamda ben XPath s\u0131n\u0131f\u0131yla XML okumaya, XML sorgulama diyorum.\u00c7\u00fcnk\u00fc XPath s\u0131n\u0131f\u0131yla belirli kriterlere g\u00f6re se\u00e7im yap\u0131yoruz.E\u011fer XPath s\u0131n\u0131f\u0131ndan yararlanmak istiyorsak,projemize System.Xml.XPath namespaceini eklememiz gerekiyor.<!-- AddThis Advanced Settings generic via filter on get_the_excerpt --><!-- AddThis Share Buttons generic via filter on get_the_excerpt --><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[12,234],"tags":[752,243],"class_list":["post-772","post","type-post","status-publish","format-standard","hentry","category-c-sharp-c","category-xml","tag-xml","tag-xpath"],"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/posts\/772","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/comments?post=772"}],"version-history":[{"count":0,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/posts\/772\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/media?parent=772"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/categories?post=772"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/tags?post=772"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}