{"id":417,"date":"2018-06-27T01:23:59","date_gmt":"2018-06-26T22:23:59","guid":{"rendered":"http:\/\/www.scozturk.com\/?p=417"},"modified":"2025-08-29T07:26:33","modified_gmt":"2025-08-29T07:26:33","slug":"ruby-iv-xml-dosyalari-ile-calismak","status":"publish","type":"post","link":"http:\/\/18.193.70.38\/?p=417&lang=tr","title":{"rendered":"Ruby &#8211; IV &#8211; XML Dosyalar\u0131 ile \u00c7al\u0131\u015fmak &#8211; I"},"content":{"rendered":"<p><strong><em>Giri\u015f<\/em><\/strong><br \/>\nTemel programlama i\u015flemleri d\u0131\u015f\u0131nda, <em>Ruby<\/em> ile daha \u00fcst seviyeli i\u015flemleri yapmak da olduk\u00e7a kolayd\u0131r. Bu yaz\u0131da k\u0131saca <em>Ruby<\/em> ile <em>XML<\/em> dosyalar\u0131yla nas\u0131l \u00e7al\u0131\u015f\u0131labilece\u011fini g\u00f6rece\u011fiz. Ba\u015flamadan \u00f6nce &#8220;<em>nokogiri<\/em>&#8221; paketini y\u00fckleyelim, bu sayede rahatl\u0131kla XML dosyalar\u0131 ile \u00e7al\u0131\u015fabilece\u011fiz:<\/p>\n<p><code>gem install nokogiri<\/code><\/p>\n<p><em><strong>Yeni Bir XML Dosyas\u0131 Olu\u015fturmak<\/strong><\/em><br \/>\n<em>XML<\/em> dosyalar\u0131 ile \u00e7al\u0131\u015fmaya ba\u015flamadan \u00f6nce dosyam\u0131z\u0131 olu\u015ftural\u0131m. Asl\u0131nda do\u011frudan bir <em>XML<\/em> dosyas\u0131 ele al\u0131nabilirdi, ama bu da g\u00fczel bir \u00f6rnek olacakt\u0131r:<\/p>\n<pre class=\"brush: plain; title: ; notranslate\" title=\"\">\n# Eklenecek K\u00fct\u00fcphaneler\nrequire 'rubygems'\nrequire 'nokogiri'  \n\n# Yeni bir XML a\u011fac\u0131 olu\u015ftural\u0131m\nxml_dosyasi = Nokogiri::XML::Builder.new do |xml|\n\t# &quot;veriler&quot;i tan\u0131mlayal\u0131m\n\txml.veriler {\n\t\t# &quot;veriler&quot; i\u00e7erisinde &quot;veri&quot; tan\u0131mlayal\u0131m\n\t\txml.veri(:id =&gt; &quot;1&quot;, :ad =&gt; &quot;veri1&quot;, :deger =&gt; &quot;1111&quot;)\n\t\txml.veri(:id =&gt; &quot;2&quot;, :ad =&gt; &quot;veri2&quot;, :deger =&gt; &quot;2222&quot;)\n\t\txml.veri(:id =&gt; &quot;3&quot;, :ad =&gt; &quot;veri3&quot;, :deger =&gt; &quot;3333&quot;)\n\t}\nend\n\n# XML'i dosyaya kaydedelim\nFile.write(&quot;deneme.xml&quot;, xml_dosyasi.to_xml)\n<\/pre>\n<p>Kodu \u00e7al\u0131\u015ft\u0131rd\u0131ktan sonra &#8220;<em>deneme.xml<\/em>&#8221; dosyas\u0131n\u0131n a\u015fa\u011f\u0131daki i\u00e7erikle olu\u015ftu\u011funu g\u00f6receksiniz:<\/p>\n<pre class=\"brush: plain; title: ; notranslate\" title=\"\">\n&lt;?xml version=&quot;1.0&quot;?&gt;\n&lt;veriler&gt;\n  &lt;veri id=&quot;1&quot; ad=&quot;veri1&quot; deger=&quot;1111&quot;\/&gt;\n  &lt;veri id=&quot;2&quot; ad=&quot;veri2&quot; deger=&quot;2222&quot;\/&gt;\n  &lt;veri id=&quot;3&quot; ad=&quot;veri3&quot; deger=&quot;3333&quot;\/&gt;\n&lt;\/veriler&gt;\n<\/pre>\n<p><strong><em>XML Dosyas\u0131 Okuma ve Belirli Verileri Se\u00e7me<\/em><\/strong><br \/>\nAz \u00f6nce olu\u015fturdu\u011fumuz <em>XML<\/em> dosyas\u0131n\u0131 okuyup dosyadan bilgi \u00e7ekmenin nas\u0131l yap\u0131ld\u0131\u011f\u0131n\u0131 g\u00f6relim:<\/p>\n<pre class=\"brush: plain; title: ; notranslate\" title=\"\">\n# Eklenecek K\u00fct\u00fcphaneler\nrequire 'rubygems'\nrequire 'nokogiri'  \n\n# XML dosyam\u0131z\u0131 a\u00e7al\u0131m\nxml_dosyasi = Nokogiri::XML(File.open(&quot;deneme.xml&quot;)) do |config|\n\tconfig.strict\nend\n\n# &quot;veri&quot;leri se\u00e7elim ve id'si 2 olan girdiyi ekrana basal\u0131m\nveri_girisleri = xml_dosyasi.search(&quot;veri&quot;)\nveri_girisleri.each do |veri|\n\tif veri&#x5B;'id'] == &quot;2&quot;\n\t\tputs veri&#x5B;'id'] + &quot; &quot; + veri&#x5B;'ad'] + &quot; &quot; + veri&#x5B;'deger']\n\tend\nend\n\n# \u0130\u015fimiz bitti\nexit\n<\/pre>\n<p>Bu kadar basit.<\/p>\n<p><em><strong>XML Dosyas\u0131n\u0131 G\u00fcncelleme<\/strong><\/em><br \/>\n\u015eimdi de az \u00f6nce buldu\u011fumuz <em>id<\/em> de\u011feri <em>2<\/em> olan giri\u015fin de\u011ferini <em>2222<\/em>&#8216;den <em>1234<\/em>&#8216;e \u00e7evirip <em>XML<\/em> dosyam\u0131z\u0131 kaydedelim.<\/p>\n<pre class=\"brush: plain; title: ; notranslate\" title=\"\">\n# Eklenecek K\u00fct\u00fcphaneler\nrequire 'rubygems'\nrequire 'nokogiri'  \n\n# XML dosyam\u0131z\u0131 a\u00e7al\u0131m\nxml_dosyasi = Nokogiri::XML(File.open(&quot;deneme.xml&quot;)) do |config|\n\tconfig.strict\nend\n\n# &quot;veri&quot;leri se\u00e7elim ve id'si 2 olan girdiyi ekrana basal\u0131m\nveri_girisleri = xml_dosyasi.search(&quot;veri&quot;)\nveri_girisleri.each do |veri|\n\tif veri&#x5B;'id'] == &quot;2&quot;\n\t\tveri&#x5B;'deger'] = &quot;1234&quot;\n\tend\nend\n\n# XML'i dosyaya kaydedelim\nFile.write(&quot;deneme.xml&quot;, xml_dosyasi.to_xml)\n<\/pre>\n<p>&#8220;<em>deneme.xml<\/em>&#8221; dosyas\u0131n\u0131 herhangi bir text edit\u00f6r\u00fcnde a\u00e7\u0131p kontrol edebilirsiniz.<\/p>\n<p><em><strong>XML Dosyas\u0131na Yeni Girdi Ekleme<\/strong><\/em><br \/>\nBu \u00f6rnekte <em>id<\/em>&#8216;si <em>4<\/em> olan bir veri nesnesini <em>id<\/em>&#8216;si <em>2<\/em> ve <em>3<\/em> olan nesneler aras\u0131na ekleyelim:<\/p>\n<pre class=\"brush: plain; title: ; notranslate\" title=\"\">\n# Eklenecek K\u00fct\u00fcphaneler\nrequire 'rubygems'\nrequire 'nokogiri'  \n\n# XML dosyam\u0131z\u0131 a\u00e7al\u0131m\nxml_dosyasi = Nokogiri::XML(File.open(&quot;deneme.xml&quot;)) do |config|\n\tconfig.strict\nend\n\n# &quot;veri&quot; nesnelerinin hespini veriler nesnemize XML'den \u00e7ekelim\nveriler = xml_dosyasi.root.children.select(&amp;:element?)\n\n# Ekleyece\u011fimiz nesneyi olu\u015ftural\u0131m\nveri_yeni = Nokogiri::XML::Node.new &quot;veri&quot;, xml_dosyasi\nveri_yeni&#x5B;'id']=&quot;4&quot;\nveri_yeni&#x5B;'ad']=&quot;veri4&quot;\nveri_yeni&#x5B;'deger']=&quot;4444&quot;\n\n# &quot;veri&quot;ler i\u00e7erisinde gezinip id'si 2 olan nesneyi bulal\u0131m\nveriler.each do |veri|\n\tif veri&#x5B;'id'] == &quot;2&quot;\n\t\t# Nesneyi id=2'den sonraki nesneye ekleyelim\t\n\t\tveri.add_next_sibling(veri_yeni)\n\tend\nend\n\n# XML'i dosyaya kaydedelim\nFile.write(&quot;deneme.xml&quot;, xml_dosyasi.to_xml)\n<\/pre>\n<p><em><strong>Sonu\u00e7<\/strong><\/em><br \/>\n<em>XML<\/em> dosyalar\u0131yla yap\u0131labilecek temel i\u015flemleri g\u00f6rd\u00fck, umar\u0131m i\u015finize yarar!<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Giri\u015f Temel programlama i\u015flemleri d\u0131\u015f\u0131nda, Ruby ile daha \u00fcst seviyeli i\u015flemleri yapmak da olduk\u00e7a kolayd\u0131r. Bu yaz\u0131da k\u0131saca Ruby ile XML dosyalar\u0131yla nas\u0131l \u00e7al\u0131\u015f\u0131labilece\u011fini g\u00f6rece\u011fiz. Ba\u015flamadan \u00f6nce &#8220;nokogiri&#8221;&#8230;<\/p>\n","protected":false},"author":1,"featured_media":437,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[225,237,191],"tags":[239,241],"class_list":["post-417","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-programlama-tr","category-ruby-tr","category-teknik-tr","tag-ruby-tr","tag-xml-tr"],"_links":{"self":[{"href":"http:\/\/18.193.70.38\/index.php?rest_route=\/wp\/v2\/posts\/417","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/18.193.70.38\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/18.193.70.38\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/18.193.70.38\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/18.193.70.38\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=417"}],"version-history":[{"count":1,"href":"http:\/\/18.193.70.38\/index.php?rest_route=\/wp\/v2\/posts\/417\/revisions"}],"predecessor-version":[{"id":1198,"href":"http:\/\/18.193.70.38\/index.php?rest_route=\/wp\/v2\/posts\/417\/revisions\/1198"}],"wp:featuredmedia":[{"embeddable":true,"href":"http:\/\/18.193.70.38\/index.php?rest_route=\/wp\/v2\/media\/437"}],"wp:attachment":[{"href":"http:\/\/18.193.70.38\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=417"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/18.193.70.38\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=417"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/18.193.70.38\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=417"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}