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 2025

Video: iron-ajax… wat?! -- Polycasts #26 2025
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

Genişletme Bağlantılar ve Bina Robotları için Pinouts - mankenler

Genişletme Bağlantılar ve Bina Robotları için Pinouts - mankenler

Eğer bir robot inşa ediyorsanız, çok sayıda elektrik bağlantısı, bu yüzden çok sayıda iğne ile uğraşıyorsunuz. Aşağıdaki tabloda, genişleme konektörleri ve pim numaraları için sinyal gösterilmektedir. İstenmeyen çapraz bağlantıları önlemeye yardımcı olabilir. Genişletme Konnektörü Pin Numarası Sinyal Genleşmesi Konnektör Pin Numarası Sinyal 1, 2 Toprak 16 P11 Yeşil LED 3, 4 + 5 ...

Dizinler içeren Kablosuz Erişim Noktalarını bulma - mankenler

Dizinler içeren Kablosuz Erişim Noktalarını bulma - mankenler

Sıcak noktaları bulma konusunda çevrimiçi dizinler, gezinmek için mükemmel bir araçtır. ABD, Kanada ve dünyadaki artan sayıda sıcak nokta. Size kolaylık sağlamak için, bu dizinlerden bazıları. Dizin Notları JiWire WiFi Bulucu 144 ülkede ücretsiz ve ücretli Wi-Fi yerleri dizini sağlar. AT & T ...

Ham Radyoda genel Sınıf Frekans Ayrıcalıkları - mankenler

Ham Radyoda genel Sınıf Frekans Ayrıcalıkları - mankenler

Yakında yapmadıysanız, siz Yükseltmeyi düşünüyorum. Aşağıdaki tabloda gösterildiği gibi, yüksek frekanslı (HF) bantlarda kullanmak için daha fazla frekansa sahipsiniz. Tüm lisans sınıfları için ABD frekansı ve mod ayrıcalıklarının eksiksiz bir listesi, Amerikan Radyo Röle Ligi'nden (ARRL) edinilebilir. Bant Frekansları ...

Editörün Seçimi

Adobe Flash CS6'da Maske Katmanlarını Kullanma - mankenler

Adobe Flash CS6'da Maske Katmanlarını Kullanma - mankenler

Adobe Flash CS6'da maskeleme kavramı Bir parçanın bölümlerini gizlemek ya da ortaya çıkarmak için bir şekli (ya da şekilleri) kullanır - tıpkı evinizdeki küçük bir pencere aracılığıyla dışarıdan bakmak gibi. Pencere boyutu, içerideyken görebileceğiniz şeyi sınırlar. Flash, özel bir katman özelliklerine sahiptir ...

Flash CS5 3D Rotasyon Aletinin Kullanımı - mankenler

Flash CS5 3D Rotasyon Aletinin Kullanımı - mankenler

Adobe'nin kapsamlı çizim ve animasyon yetenekleri Flash Creative Suite 5, Flash'ın 3D Döndürme aracıyla büyük ölçüde geliştirilebilir. 3B Döndürme aracı, sembolü x, y ve z eksenleri etrafında döndürmek ve dönüştürmek için herhangi bir film klibi örneğinde kullanılabilir. Bir film klibi örneğini 3D olarak oluşturmak için bunları izleyin ...

Flash CS5 3D Çeviri Aletini Kullanma - aumlalar

Flash CS5 3D Çeviri Aletini Kullanma - aumlalar

In 3D Döndürme aracının aksine Flash CS5 film kliplerini bir eksen etrafında döndüren Adobe Flash Creative Suite 5, 3D Çeviri aracı, bir film klibini algılanan mesafeyi ve sahnedeki diğer nesnelere göre derinliğini değiştirmek için belirli bir eksende kaydırır. Bu kavramı üçlü düşünün ...

Editörün Seçimi

Pratik İlköğretim Sınavı-Grafik Çözümleri - mankenler

Pratik İlköğretim Sınavı-Grafik Çözümleri - mankenler

Praxis İlköğretim sınavının Matematik bölümü bir dizi çizgide bir eşitsizliğe çözüm bulmanızı gerektiren bir soru. Başlamak için, çözümdeki sayıya bir nokta koyarsınız. Sembolü> veya

Pratik İlk Öğretim Sınavı-Ölüm Şekilleri - mankenler

Pratik İlk Öğretim Sınavı-Ölüm Şekilleri - mankenler

Praxis İlköğretim Matematik ve Bilim bölümleri Eğitim sınavı, farklı ölçme şekillerine aşina olmanız gereken sorular içerir. Ölçümler, çeşitli tiplerde tanımlanabilir. Mesafe için İngilizce sistem birimleri inç, feet, metre ve mil içerir. Bunlar birbirine dayanır. Bir ayak 12 ...

Pratik İlk Öğretim Sınavı-Akıcılık - mankenler

Pratik İlk Öğretim Sınavı-Akıcılık - mankenler

Praxis İlköğretim sınavı, yardımcı stratejilerinizi test eden sorular içerir öğrenciler akıcılıklarını İngilizce olarak geliştirirler. Bu stratejiler, grafik düzenleyicileri kullanarak ve çıkarımlar yapmayı içerebilir. Akıcı bir okuyucu, sınıf düzeyinde bir metni doğruluk, çabukluk ve ifade ile okuyabilir.