Ev Kişisel Finans XML Bağlama için Java API'si ile Özel Kod Oluşturma (JAXB) - kuklalar

XML Bağlama için Java API'si ile Özel Kod Oluşturma (JAXB) - kuklalar

İçindekiler:

Video: iron-ajax… wat?! -- Polycasts #26 2024

Video: iron-ajax… wat?! -- Polycasts #26 2024
Anonim

JAXB ile XML Bağlama için Java API'sı . JAXB ile bir XML belgesi alırsınız ve belgeyi işlemek için mükemmel bir Java sınıfı dosyası oluşturursunuz. İhtiyaçlarınız değiştiğinde ve sınıf artık ne yapmak istediğinizi yapmazsa, yeni bir alt sınıf oluşturursunuz.

SAX veya DOM kodu yazarken bir XML işleme programı oluşturursunuz. Programınız bir belge okur ve belgeyi yararlı iş yapmak için kullanır - public void startElement veya node gibi zararsız birşeyle başlayarak. getnodename (). Her iki durumda da, programınız belgenin içinde ne olduğuna dair bir varsayım yapmaz. Belgede bir kök öğesi, bazı alt öğeler bulunur ve hepsi bu kadar. Bu belge hakkında yaptığınız özel varsayımlar, kodun yararlılığını aslında daraltır.

Çok yönlü kod ile özelleştirilmiş kod arasında

Listeleme 1 ve 2'deki kodu düşünün. Liste 1, bir belge ağacındaki beş düğümü tarar. Bu beş düğüm belirli bir şekilde düzenlenmeli veya program çöküyor. (Liste, kök düğümün altında doğrudan en az iki çocuk bulunan bir yorum ve bir kök düğüm istiyor.)

Liste 1: Birkaç düğüm görüntüleme

içe aktarma organı. W3C. dom. Düğüm;

ithalat ofisi. W3C. dom. NamedNodeMap;

sınıf MyTreeTraverser

{

MyTreeTraverser (Düğüm noktası)

{

Sistem. dışarı. println (düğüm. getNodeName ());

düğüm = düğüm. getFirstChild ();

Sistem. dışarı. println (düğüm. getNodeName ());

düğüm = düğüm.) (GetNextSibling;

Sistem. dışarı. println (düğüm. getNodeName ());

düğüm = düğüm. getFirstChild ();

Sistem. dışarı. println (düğüm. getNodeName ());

düğüm = düğüm.) (GetNextSibling;

Sistem. dışarı. println (düğüm. getNodeName ());

}

}

Liste 2: DOM ağacını çaprazlama

import org. W3C. dom. Düğüm;

ithalat ofisi. W3C. dom. NamedNodeMap;

sınıf MyTreeTraverser

{

Düğüm düğüm;

MyTreeTraverser (Düğüm düğüm)

{

bu. düğüm = düğüm;

displayName ();

DisplayValue ();

if (node.getNodeType () == Düğüm ELEMENT_NODE) ​​

displayAttributes ();

Sistem. dışarı. println ();

displayChildren ();

}

void displayName ()

{

Sistem. dışarı. yazdır ("İsim:");

Sistem. dışarı. println (düğüm. getNodeName ());

}

void displayValue ()

{

String nodeValue = düğüm. getNodeValue ();

if (nodeValue! = Null)

nodeValue = nodeValue.) (Döşeme;

Sistem. dışarı. yazdır ("Değer:");

Sistem. dışarı. println (nodeValue);

}

void displayAttributes ()

{

NamedNodeMap attribs = düğüm. GetAttributes ();

için (int i = 0; i

{

System ++. dışarı. println ();

Sistem. dışarı. print ("Öznitelik:");

Sistem. dışarı. yazdır (attribs. item (i). getNodeName ());

Sistem. dışarı. yazdır ("=");

Sistem. dışarı. println (öznitelikler item (i). getNodeValue ());

}

}

void displayChildren ()

{

Node çocuk = düğüm. getFirstChild ();

while (child! = Null)

{

yeni MyTreeTraverser (çocuk);

çocuk = çocuk.) (GetNextSibling;

}

}

}

Liste 2'deki kod daha genel. Bu kod, çalıştırdığı belge yapısını denetler. Kod bir alt düğüm bulduğunda çocuğu tarar ve torun arar. Hiçbir torun yoksa, kod kardeşleri arar. Kod, herhangi bir belge ağacını işleyebilir - bir düğüm var mı yoksa bin düğüm var mı.

Böylece, Liste 2, Liste 1'ten daha çok yönlüdür. Ancak, bu çok yönlülük dezavantajlarla birlikte gelir - çok yüksek masraf olasılığı da dahil olmak üzere. Liste 2'deki kod tüm XML belgesini ayrıştırmak zorundadır - ve belgenin ağacının bir temsilini bilgisayarın belleğine yerleştirmiştir. Belge çok büyükse temsili geniştir: Bellek, tüm bu geçici verilerin şişmesine neden olur ve Liste 2'deki kod yavaşlar tarama yapar.

Özelleştirmenin faydaları

Boston, Massachusetts'deki Faneuil Hall'a gitmeye çalıştığınızı düşünün. Nereden başlayacağın önemli değil; Gezi her zaman kafa karıştırıcı ve zor olacak. Her neyse, rotanızı planlamanız gerekir. Yakındaki Revere veya Cambridge'de veya Boston şehir merkezinde kaybolabilirsiniz. Kaynaklarınıza bağlı olarak iki seçeneğiniz vardır:

  • Bir benzin istasyonunda durup bir harita satın alabilirsin. Bunu yaparsan asla Faneuil Salonu'na gelemezsiniz. Ne de olsa, haritada nerede olduğunu bulmak, alternatif güzergah aramak, bir güzergah seçmek ve sonra (cennet sana yardımcı oluyor) tekrar kaybolmadan güzergahı takip etmeye çalışmak zorundasın.
  • Faneuil Hall'a gitmek istediğiniz pahalı, konuşmakta olan GPS sisteminizi söyleyebilirsiniz. Sistem, özelleştirilmiş bir rota çiziyor ve orada olduğunuz ne olursa olsun mutsuz yerden oradan Faneuil Hall'a giden en uygun rotaya dönüş yapmanızı sağlayacaktır. Rota, GPS sesinin (örneğin) "Bu kavşakta işaret yok, ama yine de sola dönelim" dediği şekilde özelleştirildi. "Daha sonra, ses," Bu kavşakta iki işaret var ve işaretler birbiriyle çelişiyor "diyor. Ama yine de sağa dön. "

Kağıt haritasını kullanmak, konuşan GPS kullanmaktan daha fazla çalışma (daha fazla zaman, çaba, beceri ve sabır) gerektirir. Niye ya? Kağıt haritası özel ihtiyaçlarınıza göre özelleştirilmediğinden; Sonuçta, "Boston metropol bölgesinin tamamı burada. Faneuil Hall orada bir yerde. Siz bir sonraki adımda ne yapmanız gerektiğini öğreneceksiniz. "

Özel bir sistem (beklediğiniz gibi) acil durumunuza göre ayarlanmayan bir sistem daha kolaydır. Böylece, Liste 2'nin XML işleme kodu, bilgisayarınızın bellek alanına ("İşte ağaca - sen sonra ne yapacağını bulmaya …") devasa, kaynak canlandırıcı bir DOM ağacı kılar. Çünkü kod isn ' özelleştirilmemiş.Kod, elinizde olmayan herhangi bir eski belge için geçerlidir ve bunu yapmak için her zaman kaynakları boşa çıkarır.

JAXB'nin özü

JAXB'nin arkasındaki fikir, mevcut ihtiyaçlarınızı karşılamak için özel hazırlanmış sınıf yaratmaktır. Bir XML belgesinin açıklamasını alıp şema derleyici adlı özel bir programla çalıştırıp üretilen sınıf adında yeni bir sınıf elde etmiş olursun. Bu üretilen sınıf, belirli XML belgeleriyle çalışmak üzere uyarlanmıştır.

Örneğin, XML belgeleriniz Total adında öğeler içeriyorsa, oluşturulan sınıf setTotal ve getTotal yöntemlerine sahip olabilir. Bir belgenin öğesi bir fullName özniteliğine sahipse, oluşturulan sınıf setFullName ve getFullName yöntemlerine sahip olabilir. (Bkz. Şekil 1).

Bir XML belgesinin bir bölümü ile bir Java sınıfının bir parçası arasındaki bağlantıya bir bağlama adı verilir. Tüm bu bağlamalarla, sınıfın bir örneği tek bir XML belgesini temsil eder.

Şekil 1: Bir nesne bir belgeyi temsil eder.

Öyleyse bir nesneyi bir XML belgesine nasıl bağlarsınız? Peki, oluşturulan sınıf unmarshal ve mareşal adlı yöntemleri vardır. (Şekil 2'ye bakın.)

  • Sıralamayı kaldırma yöntemi bir XML dosyasını okur. Yöntem, XML belgesinden değerleri alır ve bu değerleri Java nesnesindeki değişkenlere atar.
  • Sıralayıcı yöntemi, bir XML dosyası yazar. Yöntem Java nesnesinden değer alır ve bu değerleri XML belgesini oluşturmak için kullanır.

Bunun gibi yöntemlerle bir XML belgesindeki verileri alabilir ve değiştirebilirsiniz.

Şekil 2: Değerlerin okunması ve yazılması.

XML Bağlama için Java API'si ile Özel Kod Oluşturma (JAXB) - kuklalar

Editörün Seçimi

Daha İyi Raporlama Modelleri için Power Query ve Power Pivot'u birlikte kullanın - Power Pivot'u kullanarak mankenler

Daha İyi Raporlama Modelleri için Power Query ve Power Pivot'u birlikte kullanın - Power Pivot'u kullanarak mankenler

Güç Sorgusu birlikte yönetilmesi ve bakımı kolay raporlama modelleri oluşturmanıza yardımcı olabilir. Bir raporlama modeli, raporlama mekanizmasının oluşturulduğu temeli sağlar. Verileri içe aktaran, dönüştüren, şekillendiren ve toplayan bir raporlama işlemi oluşturduğunuzda esasen bir raporlama modeli oluşturursunuz demektir. Kötü oluşturma ...

Excel Verilerinizi saklamak isteyen, Excel Veri Modelinizi Belgelemek ve Düzenlemek için Tabları Kullanın - mankenler

Excel Verilerinizi saklamak isteyen, Excel Veri Modelinizi Belgelemek ve Düzenlemek için Tabları Kullanın - mankenler

Bir çalışma sayfası sekmesiyle sınırlı model doğaldır. Bir sekmeyi takip etmek, farklı sekmeleri kullanmaktan çok daha kolaydır. Bununla birlikte, veri modelinizin bir sekme ile sınırlandırılması, aşağıdakiler de dahil olmak üzere sakıncaları vardır: Bir sekmeyi kullanmak, genellikle analiziniz üzerinde sınırlar getirir. Çünkü yalnızca çok fazla veri kümesi olabilir ...

Excel Gösterge Tablonuzu ve Raporları için Düğme Denetimi'ni kullanın - mankenler

Excel Gösterge Tablonuzu ve Raporları için Düğme Denetimi'ni kullanın - mankenler

Excel, bir dizi denetimler sunar Gösterge panolarına ve raporlarınıza kullanıcı arabirimi öğeleri eklemek için özel olarak tasarlanmış Form kontrolleri. Bir çalışma sayfasında bir Form denetimi yerleştirdikten sonra daha sonra belirli bir görev gerçekleştirmek için yapılandırabilirsiniz. Düğme denetimi, kitlenize makroları yürütmek için net ve kolay bir yol sunar ...

Editörün Seçimi

Kendi Özelleştirilmiş Excel 2013 Üstbilgi veya Altbilgi'nizi - zaman zaman

Kendi Özelleştirilmiş Excel 2013 Üstbilgi veya Altbilgi'nizi - zaman zaman

Mankenler yapabilir, bilgi eklemek isteyebilirsiniz Excel 2013'te hisse senedi liste kutularında veya hazır bilgi başlıkları ve altbilgilerinde Excel'in sunmadığı bir düzenleme kullanılabilir. Bu zamanlarda Tasarımın Üst Bilgi ve Altbilgi Öğeleri grubunda görünen komut düğmelerini kullanmanız gerekir ...

Excel 2010 Grafik Nesneleri

Excel 2010 Grafik Nesneleri

Işleci excel 2010, çalışma sayfalarındaki grafik nesneleri değiştirmenize izin veren birçok araç sunar. Örneğin nesneleri silmek, taşımak, yeniden boyutlandırmak, döndürmek, çevirmek ve kırpmak için kullanabilirsiniz. Bir resmi veya resmi kırpmak, resmin istenmeyen bölümlerini kaldırmanıza izin verir. Grafikleri işleme Çalışma sayfasındaki grafik nesnelerini değiştirmek için aşağıdaki adımları izleyin: Nesneyi seçin ...

Gömülü bir Excel 2007 Grafiğini taşıma ve yeniden boyutlandırma - mankenler

Gömülü bir Excel 2007 Grafiğini taşıma ve yeniden boyutlandırma - mankenler

Gömülü grafiği kolayca taşıyabilir veya yeniden boyutlandırabilirsiniz. Yerleşik bir grafik seçildiğinde (oluşturduktan hemen sonra veya herhangi bir bölümünü tıkladıktan sonra), Tasarım, Yerleşim ve Biçim sekmeleriyle Grafik Araçları içeriksel sekmesi görünür ...

Editörün Seçimi

PHP Değişkenlerine Ad Verme - mankenler

PHP Değişkenlerine Ad Verme - mankenler

Değişkenleri, bilgi tutmak için kullanılan kaplardır. PHP değişkenlerinin bir adı vardır ve bilgiler değişkente saklanır. Örneğin, bir değişkene $ yaş adını verebilir ve içindeki sayı 12'yi saklayabilirsiniz. Bir değişkende saklanan bilgiler daha sonra komut dosyasında kullanılabilir. Değişkenler için en yaygın kullanımlardan biri ...

PHP ile bir Web Sayfasında İçerik Gösterimi - mankenler

PHP ile bir Web Sayfasında İçerik Gösterimi - mankenler

Web'de içerik görüntülersiniz PHP echo veya print ifadeleriyle sayfa; ikisi de aynı şeyi yapar. Eko veya print deyimi kullanıcının tarayıcısına gönderilen çıktı üretir. Aslında, tarayıcı çıktıyı HTML olarak işler. Eko ifadesinin genel biçimi echo outputitem, outputitem, outputitem, ... şu şekildedir ...

HTML5 ve CSS3 Programlama için PHP ile Döngüler Yapmak - AYRINTILAR

HTML5 ve CSS3 Programlama için PHP ile Döngüler Yapmak - AYRINTILAR

Bazen siz HTML5 ve CSS3 programcısı olarak bir şeyler tekrarlamak istiyorlar. PHP (çoğu programlama dili gibi) bir dizi döngüsel kurmayı desteklemektedir. Mütevazı ama sevimli döngü ile başlayın. Bu 100 zar atar. Bu elle yapmak sıkıcı olacak, ancak bilgisayarlarda o kadar iyi şeyler tam olarak böyle.