Forum: D Programlama Dili RSS
D ile XML okumak
kerdemdemir #1
Üye Eyl 2013 tarihinden beri · 123 mesaj · Konum: Danimarka
Grup üyelikleri: Üyeler
Profili göster · Bu konuya bağlantı
Konu adı: D ile XML okumak
Merhabalar ,

Çok basit bir  konu olsa bile bu tecrübemi paylaşmak istedim.

std.xml'in web linkine girdiğimizde direk bir uyarı göze çarpıyor:

"Warning: This module is considered out-dated and not up to Phobos' current standards. It will remain until we have a suitable replacement, but be aware that it will not remain long term."

Kısaca Phobos'un standartlarına uymadığı ve değiştirileceği belirtiliyor. Bunu okuduğumda D'nin standartları çok yüksektir, modülde sorun yoktur diye düşünmüştüm. Fakat basit bir XML dosyasını parse etmeyi başaramadım .

Bunun üstüne  bağlantıdan(http://www.digitalmars.com/d/archives/digitalmars/D/learn/…) takip edilebilecek olan 

arsd.dom.d modulünü projeme ekledim. Ve aşağıdaki gibi kullandım.

        auto document = new Document(readText(fileName), true, true);
    
        auto polMap = document.requireSelector("Policy");
        auto policyID = polMap.id; 
        
        auto contentMap = document.requireSelector("Filter");
        auto resolveIP = contentMap.redirIP;
        auto redirectURL = contentMap.redirURL;
        
        testVal = [];
        foreach(testMap; document.getElementsByTagName("UnitTest"))
        {
            string uniqTestID = policyID ~ testMap.id;
                testVal ~= Test(uniqTestID, testMap.value, cast(FilterAction)testMap.result);
        }


Ne kadar çok uzatıp canınızı sıkmak istemesem de, daha rahat anlaşılabilmesi için XML dosyasının benzerini paylaşmak istiyorum.

<Policy id="elma">
    <Filter redirIP="172.16.41.167" redirURL="">
        <Rule action="BLOCK">
            <Criteria type="APPLICATION">
                    <Value>FACEBOOK</Value>
            </Criteria>
        </Rule>
    </Filter>
 
 
    <UnitTest id="1" value="dns://hurriyet.com.tr" result="NOT_BLOCK"/>
    <UnitTest id="2" value="http://vatan.com.tr" result="NOT_BLOCK"/>
    <UnitTest id="3" value="https://facebook.com" result="BLOCKED"/>
</Policy>

Benim gibi küçük bir proje yapıyorsanız ve performanstan daha fazla işi hızlı bitirmeye ihtiyacınız varsa arsd.dom.d modülünü tavsiye ediyorum.

Saygılarımla
Kadir Erdem Demir
acehreli (Moderatör) #2
Kullanıcı başlığı: Ali Çehreli
Üye Haz 2009 tarihinden beri · 4527 mesaj
Grup üyelikleri: Genel Moderatörler, Üyeler
Profili göster · Bu konuya bağlantı
kerdemdemir:
arsd.dom.d modülünü tavsiye ediyorum.

Evet, Adam Ruppe'nin modülleri çok saygı görür. Yanılmıyorsam web siteleri yazıyor ve bütün modüllerini kendi işlerinde kullanmak üzere hazırlıyor.

Kolaylık olsun diye bağlantısını da vereyim:

  https://github.com/adamdruppe/arsd

Ali
Avatar
Salih Dinçer #3
Üye Ock 2012 tarihinden beri · 1912 mesaj · Konum: İstanbul
Grup üyelikleri: Üyeler
Profili göster · Bu konuya bağlantı
Ben de JSON tavsiye ederim hem daha hızlı hem de sağlam bir modüle sahip.
Bilgi paylaştıkça bir bakmışız; kar topu olmuş ve çığ gibi üzerimize geliyor...:)
acehreli (Moderatör) #4
Kullanıcı başlığı: Ali Çehreli
Üye Haz 2009 tarihinden beri · 4527 mesaj
Grup üyelikleri: Genel Moderatörler, Üyeler
Profili göster · Bu konuya bağlantı
Salih Dinçer:
Ben de JSON tavsiye ederim hem daha hızlı hem de sağlam bir modüle sahip.

İkisini de ciddi olarak kullanmadım ama std.json'dan da şikayet edildiğini duydum. Ama en azından o "deprecated" değil (bir üye işlev dışında):

  http://dlang.org/phobos/std_json.html#.JSONValue.type

Ali
Avatar
Salih Dinçer #5
Üye Ock 2012 tarihinden beri · 1912 mesaj · Konum: İstanbul
Grup üyelikleri: Üyeler
Profili göster · Bu konuya bağlantı
Evet, bir zamanlar ben de şikayet  etmiştim :)

Sanırım ondalık hassasiyeti olan bir veri türünde ciddi bir sıkıntı vardı. Belki birileri el atsa daha iyi olacaktır.
Bilgi paylaştıkça bir bakmışız; kar topu olmuş ve çığ gibi üzerimize geliyor...:)
Doğrulama Kodu: VeriCode Lütfen resimde gördüğünüz doğrulama kodunu girin:
İfadeler: :-) ;-) :-D :-p :blush: :cool: :rolleyes: :huh: :-/ <_< :-( :'( :#: :scared: 8-( :nuts: :-O
Özel Karakterler:
Bağlı değilsiniz. · Şifremi unuttum · ÜYELİK
This board is powered by the Unclassified NewsBoard software, 20100516-dev, © 2003-10 by Yves Goergen
Şu an: 2017-11-20, 01:35:29 (UTC -08:00)