1 / 23

XML Document Object Model (DOM)

XML Document Object Model (DOM). http://www.w3schools.com/dom / Dr. Galip AYDIN. DOM. DOM bir W3C ( World Wide Web Consortium ) standardıdır XML ve HTML gibi dokümanlara erişim için standart bir yol tanımlar

trent
Télécharger la présentation

XML Document Object Model (DOM)

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. XML DocumentObject Model (DOM) http://www.w3schools.com/dom/ Dr. Galip AYDIN

  2. DOM DOM bir W3C (World Wide Web Consortium) standardıdır XML ve HTML gibi dokümanlara erişim için standart bir yol tanımlar "The W3C Document Object Model (DOM) is a platform and language-neutral interface that allows programs and scripts to dynamically access and update the content, structure, and style of a document."

  3. DOM • DOM standart modeller tanımlayan 3 farklı parça/seviye içerir • Core DOM: Herhangi bir yapısal doküman için • XML DOM: XML dokümanları için • HTML DOM: HTML Dokümanları için

  4. XML DOM • XML için • standart bir nesne modeli • Standart bir programlama arayüzü • Platform ve dilden bağımsız • XML DOM bütün XML elementleri için nesne ve özellikleri ve bunlara erişim için gerekli metodları (arayüzler) tanımlar • Diğer bir deyişle DOM, XML elementlerine erişim, değiştirme, ekleme, silme gibi işlemler için bir standart sağlar.

  5. DOM Node • DOM açısından XML içindeki herşey bir düğümdür (node) • Dokümanın kendisi doküman düğümüdür • Her bir xml elementi bir element düğümüdür • XML elementlerinin içindeki yazılar yazı düğümüdür (textnode) • Herbir nitelik (attribute) nitelik düğümüdür • Yorum düğümleri de bulunabilir

  6. XML DOM Tree

  7. DOM Ağacı Düğüm ağacındaki her bir düğümün diğerleriyle hiyerarşik bir ilişkisi vardır Bu ilişkileri anlatmak için ebeveyn, çocuk ve kardeş (parent, children, siblings) terimleri kullanılır Ebeveyn düğümlerin çocukları vardır Aynı seviyedeki çocuklar kardeş (kız veya erkek) olarak adlandırılırlar

  8. Düğüm Ağacında İlişkiler Bir düğüm ağacında en tepedeki düğüme kök denir Kök düğüm hariç her düğümün sadece bir ebeveyni vardır Bir düğümün sınırsız sayıda çocuğu olabilir Çocuğu olmayan düğümlere yaprak denir Aynı ebeveyne sahip, aynı seviyedeki düğümlere kardeş denir

  9. XML DOM Parser XML dokümanlarını ayrıştırmak için kullanılan çeşitli uygulamalar (parser) yazılmıştır XML DOM modeli elemanlara erişim, değiştirmek, silmek veya eklemek için metotlar içerir ancak öncelikle dokümanın DOM nesnesine yüklenmesi gerekir

  10. JavaScript DOM Parser if (window.XMLHttpRequest)  {xhttp=new XMLHttpRequest();  }else // IE 5/6  {xhttp=new ActiveXObject("Microsoft.XMLHTTP");  }xhttp.open("GET","books.xml",false);xhttp.send();xmlDoc=xhttp.responseXML;

  11. DOM Properties x.nodeName– x düğümünün ismi x.nodeValue - x düğümünün değeri x.parentNode - x düğümünün ebeveyn düğümü x.childNodes-x düğümünün çocukları olan düğümler x.attributes - x düğümünün nitelikleri

  12. XML DOM Metotları x.getElementsByTagName(name) – verilen isimdeki bütün elementleri getir x.appendChild(node) – x düğümüne bir çocuk düğüm ekle x.removeChild(node) – x düğümünden verilen düğümü sil

  13. <script type="text/javascript"> xmlDoc=loadXMLDoc("books.xml"); x=xmlDoc.getElementsByTagName("book")[0].childNodes; y=xmlDoc.getElementsByTagName("book")[0].firstChild; for (i=0;i<x.length;i++) { if (y.nodeType==1) {//Process only element nodes (type 1) document.write(y.nodeName + "<br />"); } y=y.nextSibling; } </script>

  14. title: Everyday Italianauthor: Giada De Laurentiisyear: 2005 <script type="text/javascript"> text="<book>"; text=text+"<title>Everyday Italian</title>"; text=text+"<author>Giada De Laurentiis</author>"; text=text+"<year>2005</year>"; text=text+"</book>"; xmlDoc=loadXMLString(text); // documentElement always represents the root node x=xmlDoc.documentElement.childNodes; for (i=0;i<x.length;i++) { document.write(x[i].nodeName); document.write(": "); document.write(x[i].childNodes[0].nodeValue); document.write("<br />"); } </script>

  15. Java DOM Kütüphaneleri • DOM4J • http://dom4j.sourceforge.net/ • JDOM • http://www.jdom.org/ • Apache XML projeleri • …

  16. DOM4J Örnek import java.net.URL; import org.dom4j.Document; import org.dom4j.DocumentException; import org.dom4j.io.SAXReader; public class Foo { public Document parse(URL url) throws DocumentException { SAXReader reader = new SAXReader(); Document document = reader.read(url); return document; } }

  17. Çocuk Düğümlere Erişim public void bar(Document document) throws DocumentException { Element root = document.getRootElement(); // iterate through child elements of root for ( Iteratori = root.elementIterator(); i.hasNext(); ) { Element element = (Element) i.next(); // do something } // iterate through child elements of root with element name "foo" for ( Iteratori = root.elementIterator( "foo" ); i.hasNext(); ) { Element foo = (Element) i.next(); // do something } // iterate through attributes of root for ( Iteratori = root.attributeIterator(); i.hasNext(); ) { Attribute attribute = (Attribute) i.next(); // do something } }

  18. DOM Ağacı Üzerinde Yürüme public void treeWalk(Document document) { treeWalk( document.getRootElement() ); } public void treeWalk(Element element) { for ( inti = 0, size = element.nodeCount(); i < size; i++ ) { Node node = element.node(i); if ( node instanceof Element ) { treeWalk( (Element) node ); } else { // do something.... } } }

  19. Yeni XML Oluşturma import org.dom4j.Document; import org.dom4j.DocumentHelper; import org.dom4j.Element; public class Foo { public Document createDocument() { Document document = DocumentHelper.createDocument(); Element root = document.addElement( "root" ); Element author1 = root.addElement( "author" ) .addAttribute( "name", "James" ) .addAttribute( "location", "UK" ) .addText( "James Strachan" ); Element author2 = root.addElement( "author" ) .addAttribute( "name", "Bob" ) .addAttribute( "location", "US" ) .addText( "Bob McWhirter" ); return document; } }

  20. SAX – Simple API for XML SAX DOM’a alternatif olarak geliştirilmiş bir sıralı erişim ayrıştırıcısıdır (parser). XML dokümanlarını okumak için gerekli araçları sağlar. SAX olay-güdümlü (event-driven) olarak çalışan akışa göre çalışan (stream-parser) bir ayrıştırıcıdır. SAX ayrıştırıcısı karşılaştığı düğümleri sırasıyla işler (event), ve bu işleme dokümanın sonuna kadar devam eder.

  21. SAX vs DOM SAX DOM’a göre daha küçük hafızaya ihtiyaç duyar. Özellikle büyük XML dokümanlarının işlenmesinde bu büyük bir avantajdır. DOM parser tüm XML ağacının hafızaya yüklenmesine gereksinim duyar. Olay-güdümlü yaklaşım dolayısıyla SAX parserDOM’a göre genellikle daha hızlıdır. XSLT ve XPATH gibi bazı teknolojiler tüm XML ağacına ihtiyaç duydukları için SAX parser kullanamazlar.

  22. StAX – XML PullParser Araştırın ! sjsxp Woodstox Aalto

More Related