.Net Denemeleri

Repeater ile Xml göstermek

Dataveri kaynağınız xml olduğunda içindeki verileri okumak veritabanındandatabase okumak kadar kolay olmayabilir. XmlDataSorce nesnesiclass ile bu işlemi basit bir hale getirebilir.

<asp:Repeater ID="Repeater1" runat="server" DataSourceID="XmlDataSource1">
    <HeaderTemplate>
        <table style="font-family:Verdana;font-size:11px;">
    </HeaderTemplate>
    <ItemTemplate>
        <tr>
            <td>
                <a href='<%# XPath("link") %>'>
                    <%# XPath("title") %>
                </a>
            </td>
        </tr>
        <tr>
            <td style="text-align:right;font-style:italic;">
                <%# XPath("pubDate")%>
            </td>
        </tr>
        <tr>
            <td>
                <%# XPath("description")%>
            </td>
        </tr>
    </ItemTemplate>
    <FooterTemplate>
        </table>
    </FooterTemplate>
</asp:Repeater>
<asp:XmlDataSource ID="XmlDataSource1" runat="server"
                    DataFile="http://www.ayrilmaz.com/rss"
                    XPath="rss/channel/item"></asp:XmlDataSource>

Kodu biraz incelersek;
XmlDataSource nesneclass sinin DataFile özelliğiproperty xml dosyasının yolunu ister. Bu disk üzerinde bir dosya olabileceği gibi bir rss dökümanı da olabilir. Burada önemli olan DataFile ile belirttilen verinin nasıl gösterileceğidir. Bunu yapmanın en pratik yolu ise xpath özelliğini kullanmaktır.

xml

Veri kaynağını belirttikten sonra bunu gösterecek bir kontrole ihtiyaç var. Benim seçimim Repeater olacak. (DataList yada Grid de kullanılabilir). ItemTemplate içinde göstermek istenilen node adı XPath metoduna parametre olarak verilir ve değeri gösterilir.

Örnek proje.

5 Aralık Cumartesi, 2009 | Asp.net Xml

Web Sitemiz için Döviz Kuru

Daha önceki "Web Sitemiz .." başlıklı bir kaç yazımda Web Part' lar hazırlamıştım.
Yeni bir kontrol daha; Tcmb günlük döviz bilgileri.

Uygulamayı indirmek için tıklayın.

Kullanım kolaylığı için 2 adet özellik eklendi. design

Bu tip uygulamaları yaparken kaynağın kopyası üzerinde çalışmayı tercih ederim. Hız açısından.

public static string[] dovizBilgisi(DovizTipleri tip)
{
    if (HttpContext.Current.Cache[tip.ToString()] == null)
    {
        XmlDocument xDoc = new XmlDocument();
        // local -> test
        xDoc.Load(HttpContext.Current.Server.MapPath("App_Data/doviz.xml"));
        // online -> application
        // xDoc.Load("http://www.tcmb.gov.tr/kurlar/today.xml");
        string[] doviz = {
            xDoc.SelectSingleNode(string.Format(
                                    "Tarih_Date/Currency[@Kod='{0}']/ForexBuying",
                                    tip.ToString())).InnerText.Replace('.', ','),
            xDoc.SelectSingleNode(string.Format(
                                    "Tarih_Date/Currency[@Kod='{0}']/ForexSelling",
                                    tip.ToString())).InnerText.Replace('.', ',')
                            };
        HttpContext.Current.Cache.Insert(
            tip.ToString(),
            doviz,
            null,
            DateTime.Now.AddHours(2),
            TimeSpan.Zero);
    }
    return (string[])HttpContext.Current.Cache[tip.ToString()];
}

Döviz Kontrol

16 Mart Pazartesi, 2009 | Asp.net Xml

Xslt ile AlternatingItem ve Sort

Xslt ile çalışıyorsanız bir kaç küçük ayrıntı.
- Xml verilerini sıralamak için for-each kalıbına

<xsl:sort select="." order="ascending"/>

yazmak yeterli.
- Satırları ardışık olarak renklendirmek için de mod operatörü ve position() fonksiyonu bu işin üstesinden gelecektir.

<xsl:variable name=mod1 select="position()"/>
<xsl:if test="$modi mod 2 = 1">

Kodun tamamı;

<?xml version="1 .0" encoding="utf-8" ?>
<Sehirler>
<Sehir>Istanbul / Ataturk</Sehir>
<Sehir>Ankara / Esenboga</Sehir>
<Sehir>Ankara / Etimesgut</Sehir>
<Sehir>Murted Tur—Afb</Sehir>
<Sehir>Adana / Sakirpasa</Sehir>
<Sehir>Adana / Incirlik</Sehir>
<Sehir>Atyon</Sehir>
<Sehir>Antalya</Sehir>
<Sehir >Gaziantep</Sehir>
<Sehir>Iskenderun</Sehir>
<Sehir>Konya</Sehir>
<Sehir>Merzifon</Sehir>
<Sehir>Samsun</Sehir>
<Sehir>Sivas</Sehir>

Xml verisinin devamı için tıklayın...

<xsl:template match="/">
 <table style="width :200px;color:#333333;border-collapse:collapse;font-family:verdana;font-size : 10px;" cellspacing="0" cellpadding="4" border="0">
  <tr style="color:White;background-color:#5D7B9D;font-weight:bold;">
   <th scope="col">Şehirler</th>
  </tr>
  <xsl:for-each select="Sehirler/Sehir">
   <xsl:sort select="." order="ascending"/>
   <xsl:variable name="modi" select="position()"/>
   <xsl:if test="$modi mod 2 = 1">
    <tr style="color:#333333;background-color:#F7F6F3;">
     <td>
      <xsl:value-of select="." />
     </td>
    </tr>
   </xsl:if>
   <xsl:if test="$modi mod 2 = 0">
    <tr style="color:#284775;background-color:White;">
     <td>
      <xsl:value-of select="."/>
     </td>
    </tr>
   </xsl:if>
  </xsl:for-each>
  <tr style="color:White;background-color:#5D7B9D;font-weight:bold;">
   <th>-</th>
  </tr>
 </table>
</xsl:template>

27 Ocak Salı, 2009 | Asp.net Xml

Veritabanından Xml'e Dönüştürmece

Şöyle bir düşündüğümüzde veritabınında bulunan herhangi bir tablonun verilerini Xml formatında dosyaya yazmanın kaç yolu vardır acaba? Sabahları genelde işe erken gelirim, 1.5 saat kadar :).
Oturdum bir kaç örnek yaptım, paylaşıyorum tüm dünya ile. (Özgüvenin tavan yaptığı an)

Aklıma gelen ilk yöntem DataTable nesnesini kullanmak. Bu nesneyi sadece yazmak için kullanmak kaynak tüketimi açısından çok iyi bir seçim olmaz fakat kullanım kolaylığı açısında tercih edilebilir.

DataBase 2 Xml
 

Diğer bir yöntem ise henüz Veri KatmanındaDataLayer iken oracıkta Xml formatına dönüştürüp XmlTextWriter ile cayır cayır yazmak.

DataBase 2 Xml

Son yöntem ise daha önce şu yazıda kullandığım teknik ile (attributenitelik yerine bu sefer nodedüğüm kullandım) XDocument ile manuel olarak Xml dosyasını oluşturmak. Sanırım en zoru bu. Yanlış anlaşılmasın benim için kolay da hani ilk yapan için diyorum :)

DataBase 2 Xml

20 Kasım Perşembe, 2008 | Asp.net C# Xml Linq Ado.Net Sql

Generate Sample XML

Uzun zamandır Strong Type DataSet kullanmadığımdan basit bir uygulama yazmak belki bir kaç yenilik varsa da görmek istedim. Dataset içine basit birkaç veri girebileceğim DataTable ekledim. Ms Sql Server ile uğraşmamak için veri kaynağı olarak Xml' i uygun gördüm. Daha sonra aklıma keşke içi dolu bir Xml dosyası olasa da test işlemlerini hemen yapsam.
Visual Studio 2008 kullanıyorsanız eğer Xml Schema Explorer penceresini bilirsiniz. O pencerede DataTable' a sağ tıklarsanız tam aradığım şey ile karşılaşırsınız.

Generate Sample XML
Generate Xml

Sonuç;
Xml Sample

5 Kasım Çarşamba, 2008 | Xml Ado.Net

Xml ve Xls

Bir uygulama düşünün ki veriler Xml dosyasında sunum ise WebForm' unda olsun.

İşte tam aradığımız kontrol;

Xml Control

Verileri Xml dosyasında saklamının avantajlarından birisi de Xslt ile web uygulamalarına kolayca adapte edilebilmesidir. Örnek Xml verisi için Xslt kodu;

Xslt Code

sonuç;

Anket Sonuçları

Proje kodları.

14 Ocak Pazar, 2007 | Asp.net C# Xml