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

Ağ Yönetim: SQL Server Tablo Oluşturma - mankenler

Ağ Yönetim: SQL Server Tablo Oluşturma - mankenler

Olası veritabanı nesnelerinin en önemlileri tablolar, hangi veritabanını oluşturan gerçek verileri tutun. Bir veritabanı, en az bir tablo olmadan çok yararlı değildir. Çoğu gerçek dünyadaki veritabanı birden fazla tabloya sahiptir - aslında birçok veritabanı düzinelerce tabloya sahiptir. Bir tablo oluşturmak için şu adımları izleyin: ...

ŞEbeke Yönetim: Alt Ağa Genel Bakış - mankenler

ŞEbeke Yönetim: Alt Ağa Genel Bakış - mankenler

Alt ağ oluşturma, ağ yöneticilerinin bir IP'de mevcut olan 32 biti kullanmasına izin veren bir tekniktir Sınıf A, B ve C IP adresleri tarafından sağlanan ölçeklerle sınırlı olmayan şebekeler oluşturarak daha verimli bir şekilde adres atın. Alt ağ ile, daha gerçekçi ana bilgisayar limitleri olan ağlar oluşturabilirsiniz. Alt ağ oluşturma, daha esnek bir yol sağlar ...

ŞEbeke Yönetimi: İkili Windows Hesap Makinesi - mankenler

ŞEbeke Yönetimi: İkili Windows Hesap Makinesi - mankenler

Windows'un tüm sürümleri ile birlikte gelen Hesap Makinesi programı Birçok kullanıcının bilmediği özel Bilimsel mod. Hesap makinesini bu moda çevirdiğinizde anlık ikili ve onlu dönüşümler yapabilirsiniz; bu, bazen IP adresleriyle çalışırken kullanışlı olabilir. Windows Hesap Makinesi'ni kullanmak için ...

Editörün Seçimi

Bağlantı Mıknatıslarını Kullanarak Web Sitenize Dış Bağlantılar Çekin

Bağlantı Mıknatıslarını Kullanarak Web Sitenize Dış Bağlantılar Çekin

Web sitenize bağlantılar çekmek isterseniz, kendinizi bir bağlantı mıknatısı olarak ayarlayabilir veya bazı bağlantı yemi koyup bağlantıların size gelmesini bekleyebilirsiniz. Bağlantı mıknatısları genellikle yaratıcı Web uygulamaları, araçları, nasıl yapılır kılavuzları, referans materyalleri veya benzersiz ve değerli olan herhangi bir bilgidir ...

Bilmek ve Yapacak Bir SEO Şirket Kazanırken Yapmanız Gereken Şeyler - mankenler

Bilmek ve Yapacak Bir SEO Şirket Kazanırken Yapmanız Gereken Şeyler - mankenler

Toplama iyi bir SEO firması, çok yönlü bir pazarlama firması seçmek gibi birazcık. Şanslı olmanız ve zengin olmanız gerekebilir, ancak çok fazla zaman ve para harcamanız muhtemeldir. Aslında en yaygın sorulardan biri "Nasıl bir SEO firması seçerim? "Peki, burada dokuz var ...

Editörün Seçimi

İPuçları: AYDINLATMA

İPuçları: AYDINLATMA

Sınıf bölümünün yanında çoğu EMT kursları da Ambulans veya yangın makinesinde, acil serviste veya birleşim yerlerinde gözlemleyebileceğiniz bir klinik bileşene sahipsiniz. Klinik "gezintiye katılmak" için aşı belgesi ve aşılar sağlamanız gerekebilir. "Bu klinik saatler önemlidir. Siz ...

Test Prep < < Test Prep < < için

Test Prep < < Test Prep < < için

EMT Sınavında Bilmeniz Gereken Tıbbi Yasal Standartlar <[SET:titletr]Test Prep < < Test Prep < < için