Aspose.Words Belge Nesne Modeli (DOM)
Aspose.Words Belge Nesne Modeli (DOM), bir Word belgesinin bellek içi temsilidir. Aspose.Words DOM, bir Word belgesinin içeriğini ve biçimlendirmesini programlı olarak okumanıza, değiştirmenize ve değiştirmenize olanak tanır.
Bu bölümde Aspose.Words DOM’in ana sınıfları ve ilişkileri açıklanmaktadır. Aspose.Words DOM sınıflarını kullanarak belge öğelerine ve biçimlendirmeye programlı erişim elde edebilirsiniz.
Belge Nesne Ağacı Oluştur
Bir belge Aspose.Words DOM ‘e okunduğunda, bir nesne ağacı oluşturulur ve kaynak belgenin farklı türdeki öğelerinin çeşitli özelliklere sahip kendi DOM ağaç nesneleri vardır.
Belge Düğümleri Ağacı Oluştur
Aspose.Words bir Word belgesini belleğe okuduğunda, çeşitli belge öğelerini temsil eden farklı türde nesneler oluşturur. Bir metnin, paragrafın, tablonun veya bölümün her çalışması bir düğümdür ve belgenin kendisi bile bir düğümdür. Aspose.Words her belge düğümü türü için bir sınıf tanımlar.
Aspose.Words içindeki belge ağacı Bileşik Tasarım Desenini izler:
- Tüm düğüm sınıfları nihayetinde Aspose.Words Belge Nesne Modelindeki temel sınıf olan Node sınıfından türetilir.
- Örneğin Section veya Paragraph gibi başka düğümler içerebilen düğümler, CompositeNode sınıfından türetilir ve bu da Node sınıfından türetilir.
Aşağıda verilen diyagram, Aspose.Words Belge Nesne Modelinin (DOM) düğüm sınıfları arasındaki kalıtımı göstermektedir. Soyut sınıfların adları italiktir.

Node
sınıfından devralınmamış olarak gösterilmez.
Bir örneğe bakalım. Aşağıdaki resimde farklı içerik türlerine sahip bir Microsoft Word belgesi gösterilmektedir.

Yukarıdaki belgeyi Aspose.Words DOM ‘e okurken, aşağıdaki şemada gösterildiği gibi nesneler ağacı oluşturulur.

Document, Section, Paragraph, Table, Shape, Run, ve diyagramdaki diğer tüm elipsler, Word belgesinin öğelerini temsil eden Aspose.Words nesnelerdir.
Bir Node
Türü alın
Node sınıfı, farklı düğümleri birbirinden ayıracak kadar yeterli olsa da, Aspose.Words, belirli bir türdeki düğümleri seçmek gibi bazı API görevleri basitleştirmek için NodeType numaralandırmasını sağlar.
Her düğümün türü NodeType özelliği kullanılarak elde edilebilir. Bu özellik bir NodeType enumeration value. For example, a paragraph node represented by the Paragraph class returns NodeType.Paragraph ve Table class returns NodeType.Table ile temsil edilen bir tablo düğümü döndürür.
Aşağıdaki örnek, NodeType numaralandırmasını kullanarak bir düğüm türünün nasıl alınacağını gösterir:
Belge Ağacında Gezinme
Aspose.Words bir belgeyi düğümler arasında gezinmenizi sağlayan düğüm ağacı olarak temsil eder. Bu bölümde, Aspose.Words içindeki belge ağacının nasıl keşfedileceği ve gezinileceği açıklanmaktadır.
Daha önce Belge Gezgini’nde sunulan örnek belgeyi açtığınızda, düğüm ağacı tam olarak Aspose.Words içinde temsil edildiği gibi görünür.

Belge Düğümü ilişkileri
Ağaçtaki düğümlerin aralarında ilişkiler vardır:
- Başka bir düğüm içeren bir düğüm bir parent.
- Üst düğümde bulunan düğüm, aynı üst düğümün child. Alt düğümleri sibling düğümleridir.
- root düğüm her zaman Document düğümdür.
Diğer düğümleri içerebilen düğümler CompositeNode sınıfından türetilir ve sonuçta tüm düğümler Node sınıfından türetilir. Bu iki temel sınıf, ağaç yapısında gezinme ve değişiklik için ortak yöntemler ve özellikler sağlar.
Aşağıdaki UML nesne diyagramı, örnek belgenin birkaç düğümünü ve bunların üst, alt ve kardeş özellikleri aracılığıyla birbirleriyle ilişkilerini gösterir:

Belge Düğüm Sahibidir
Bir düğüm, yeni oluşturulmuş veya ağaçtan kaldırılmış olsa bile her zaman belirli bir belgeye aittir, çünkü stiller ve listeler gibi hayati belge çapında yapılar Document düğümünde saklanır. Örneğin, her paragrafın belge için genel olarak tanımlanmış atanmış bir stili olduğundan, Document olmadan Paragraph olması mümkün değildir. Bu kural, yeni düğümler oluştururken kullanılır. Doğrudan DOM ‘ye yeni bir Paragraph eklemek, yapıcıya iletilen bir belge nesnesi gerektirir.
DocumentBuilder kullanarak yeni bir paragraf oluştururken, oluşturucunun her zaman DocumentBuilder.Document özelliği aracılığıyla kendisine bağlı bir Document sınıfı vardır.
Aşağıdaki kod örneği, herhangi bir düğüm oluştururken, düğüme sahip olacak bir belgenin her zaman tanımlandığını gösterir:
Üst Düğüm
Her düğümün ParentNode özelliği tarafından belirtilen bir üst öğesi vardır. Bir düğümün ana düğümü yoktur, yani aşağıdaki durumlarda ParentNode null olur:
- Düğüm yeni oluşturuldu ve henüz ağaca eklenmedi.
- Düğüm ağaçtan kaldırıldı.
- Bu, her zaman boş bir üst düğüme sahip olan kök Document düğümdür.
Remove yöntemini çağırarak bir düğümü üst öğesinden kaldırabilirsiniz.Aşağıdaki kod örneği, üst düğüme nasıl erişileceğini gösterir:
Alt Düğümler
Bir CompositeNode ‘nin alt düğümlerine erişmenin en etkili yolu, sırasıyla ilk ve son alt düğümleri döndüren FirstChild ve LastChild özellikleridir. Alt düğüm yoksa, bu özellikler null döndürür.
CompositeNode
Bir düğümün alt öğesi yoksa, ChildNodes özelliği boş bir koleksiyon döndürür. CompositeNode öğesinin HasChildNodes özelliğini kullanarak herhangi bir alt düğüm içerip içermediğini kontrol edebilirsiniz.
Aşağıdaki kod örneği, ChildNodes
koleksiyonu tarafından sağlanan numaralandırıcıyı kullanarak bir CompositeNode
öğesinin hemen alt düğümlerinin nasıl numaralandırılacağını gösterir:
Aşağıdaki kod örneği, dizine eklenmiş erişimi kullanarak bir CompositeNode
öğesinin hemen alt düğümlerinin nasıl numaralandırılacağını gösterir:
Kardeş Düğümler
Belirli bir düğümden hemen önce gelen veya onu izleyen düğümü sırasıyla PreviousSibling ve NextSibling özelliklerini kullanarak elde edebilirsiniz. Bir düğüm üst öğesinin son alt öğesiyse, NextSibling özelliği null olur. Tersine, düğüm üst öğesinin ilk alt öğesiyse, PreviousSibling özelliği null olur.
Aşağıdaki kod örneği, bir bileşik düğümün tüm doğrudan ve dolaylı alt düğümlerinin nasıl verimli bir şekilde ziyaret edileceğini gösterir:
Alt ve Üst Düğümlere Yazılan Erişim
Şimdiye kadar, temel türlerden birini döndüren özellikleri tartıştık – Node veya CompositeNode. Ancak bazen Run veya Paragraph gibi belirli bir düğüm sınıfına değer atmanız gerekebilecek durumlar olabilir. Yani bileşik olan Aspose.Words DOM ile çalışırken dökümden tamamen kurtulamazsınız.
Döküm gereksinimini azaltmak için çoğu Aspose.Words sınıfı, kesin olarak yazılan erişim sağlayan özellikler ve koleksiyonlar sağlar. Yazılı erişimin üç temel modeli vardır:
- Bir üst düğüm, yazılan FirstXXX ve LastXXX özelliklerini gösterir. Örneğin, Document FirstSection ve LastSection özelliklerine sahiptir. Benzer şekilde, Table, FirstRow, LastRow ve diğerleri gibi özelliklere sahiptir.
- Bir üst düğüm, Document.Sections, Body.Paragraphs ve diğerleri gibi yazılan bir alt düğüm koleksiyonunu gösterir.
- Bir alt düğüm, üst düğümüne Run.ParentParagraph, Paragraph.ParentSection ve diğerleri gibi yazılı erişim sağlar.
Yazılan özellikler, bazen Node.ParentNode ve CompositeNode.FirstChild ‘dan devralınan genel özelliklerden daha kolay erişim sağlayan yalnızca kullanışlı kısayollardır.
Aşağıdaki kod örneği, belge ağacının düğümlerine erişmek için yazılan özelliklerin nasıl kullanılacağını gösterir: