Analyzing your prompt, please hold on...
An error occurred while retrieving the results. Please refresh the page and try again.
Bir belge üzerinde çalışırken, bir belgedeki belirli bir aralıktan içeriği kolayca ayıklayabilmek önemlidir. Bununla birlikte, içerik paragraflar, tablolar, resimler vb. gibi karmaşık öğelerden oluşabilir.
İçerik ihtiyaçlarına bakılmaksızın, o içeriği ayıklamak için kullanılan yöntem her zaman içeriği ayıklamak için hangi düğümlerin seçileceğini belirler. Bunlar ya tüm metin gövdeleri ya da basit metin koşuludur.
İçeriği ayıklarken birçok olası durum ve bu nedenle dikkate alınması gereken çok farklı düğüm türü vardır. Örneğin, içeriği ayıklamak isteyebilirsiniz:
Bazı durumlarda, paragraf ve bir alan arasında veya bir çalıştırma ve bir yer işareti arasındaki içeriği ayıklamak gibi farklı düğüm türlerini birleştirmeniz gerekebilir.
Bu makale farklı düğümler arasındaki metinleri ayıklamak için kod uygulamasını sağlar ve yaygın senaryoların örneklerini verir.
İçeriği ayıklamanın amacı genellikle onu yeni bir belgeye ayrı olarak kopyalamak veya kaydetmektir. Örneğin, içeriği ayarlayabilir ve:
Bu kolayca Aspose.Words ve aşağıdaki kod uygulaması kullanılarak gerçekleştirilebilir.
Bu bölümde yer alan kod, yukarıda tanımlanan olası tüm durumları tek bir genelleştirilmiş ve yeniden kullanılabilir yöntemle ele alır. Bu tekniğin genel kapsamı şu şekildedir:
Bu makale içinde aşağıda bulunan belge ile çalışacağız. Gördüğünüz gibi belge içerik çeşitliliği içerir. Ayrıca not alın, belgenin ikinci bölümü ilk sayfanın ortasında başlar. Belgenin bir yer imi ve yorumu da var ancak bu ekran görüntüsünde görünmezler.

İçeriği belgeden ayıklamak için, aşağıdaki ExtractContent yöntemini çağırmanız ve uygun parametreleri geçirmeniz gerekir.
Bu yöntemin temelini oluşturan, blok seviyesinde bulunan düğümleri ( Paragraflar ve tablolar ) bulup onları aynısını oluşturmak için klonlamaktır. Geçirilen işaretleyici düğümlerin blok seviyesi ise yöntem basitçe içeriği o seviyede kopyalayıp diziye ekleyebilmektedir.
Ancak, işaretleme düğümleri satır içi (bir paragrafın çocuğu) ise durum daha karmaşık hale gelir çünkü satır içi düğümü, bir çalışma alanı, yer imi alanları vb. Ne olursa olsun paragrafı bölmek gerekmektedir. Klon ebeveyn düğümlerinde bulunan ancak işaretler arasında olmayan içerik kaldırılır. Bu işlem, içeriğin ana paragrafın biçimlendirmesini koruyarak satır içi düğümlerde hala kalmasını sağlamak için kullanılır.
Bu yöntem parametreler olarak geçirilen düğümlerde de denetimleri çalıştıracak ve geçersiz bir düğüm varsa bir özel durum atacaktır. Bu yönteme geçirilecek parametreler şunlardır:
StartNode ve EndNode. İlk iki parametre içeriğin çıkarılması başlamak ve bitmek için sırasıyla tanımlayan düğümlerdir. Bu düğümler hem blok düzeyinde (Paragraph, Table) hem de satır içi düzeyde (örn. Run, FieldStart, BookmarkStart vb.):
IsInclusive. Çıkarma işleminde işaretçilerin dahil edilip edilmeyeceğini belirtir. Bu seçenek false olarak ayarlanırsa ve aynı düğüm veya ardışık düğümler geçirilirse boş bir liste döndürülür:
Bu yöntem uygulamasını ExtractContent bulabilirsiniz here. Bu yöntem bu makalede açıklanan senaryolarda referans verilecektir.
Ekstrakt edilmiş düğümlerden kolayca bir belge oluşturmak için özel bir yöntem tanımlayacağız. Bu yöntem birçok senaryoda kullanılır ve basitçe yeni bir belge oluşturur ve içeriği içeri aktarır.
Aşağıdaki kod örneği, bir düğüm listesi nasıl alınır ve yeni bir belgeye eklenir gösteriyor:
Bu, yukarıdaki yöntemi kullanarak belirli paragraflar arasındaki içeriği nasıl ayıklayacağını göstermektedir. Bu durumda, belgenin ilk yarısındaki bulunan mektubun gövdesini ayıklamak istiyoruz. Bunu 7. ve 11. paragraflar arasında olduğunu söyleyebiliriz.
Aşağıdaki kod bu görevi gerçekleştirir. Uygun paragraflar, belgedeki getChild yöntemini kullanarak ve belirtilen dizinleri geçirerek alınır. Bu düğümler daha sonra ExtractContent yöntemine geçirilir ve bunların eklenmesinin belirtildiği söylenir. Bu yöntem, bu düğümler arasındaki kopyalanmış içeriği döndürecektir. Bu içerik daha sonra yeni bir belgeye eklenecektir.
Aşağıdaki kod örneği, yukarıdaki ExtractContent yöntemini kullanarak nasıl özel paragraflar arasında içeriği ayıklayacağınızı göstermektedir:
Çıkış belgesi, çıkarılan iki paragrafı içerir.

Herhangi bir blok düzeyli veya iç içe geçmiş düğümlerin birleşimi arasındaki içeriği ayıklayabiliriz. Aşağıdaki senaryoda, ilk paragraf ve ikinci bölümde bulunan tablo arasında içerik ayıklayacağız dahil olmak üzere. Belirtilen belgeyi almak için getFirstParagraph ve getChild yöntemini çağırarak uygun Paragraph ve Table düğümlerini alıyoruz. Hafif bir varyasyon için içeriği kopyalayalım ve orijinalin altında yerleştirelim.
Aşağıdaki kod örneği, bir paragraf ile tablo arasındaki içeriği ExtractContent yöntemi kullanarak nasıl ayıklayacağını göstermektedir
Paragraf ile tablo arasındaki içerik çoğaltılmıştır. Aşağıdaki sonuçtur.

Paragraflar içinde içerik ayıklamak için aynı veya farklı stillerde paragraflar arasında, örneğin başlık stilleriyle işaretlenmişler arasında ihtiyacınız olabilir.
Aşağıdaki kod bu şekilde elde edilebileceğini gösterir. Bu, “Heading 1” ve “Header 3” stillerinin arasındaki içeriği ayıklamak için bir örnektir, başlıkları da ayıklamaz. Bunu yapmak için son parametreyi false olarak ayarlıyoruz, böylece işaretleyici düğümlerin dahil edilmemesi gerektiğini belirtiriz.
Doğru bir uygulamada, bu tüm bu stillerin paragraflar arasındaki içeriği belgeye eklemek için döngüde çalıştırılmalıdır. Ayıklanan içerik yeni bir belgenin içine kopyalanır.
Aşağıdaki kod örneği ExtractContent yöntemini kullanarak paragraflar arasındaki içeriği nasıl ayıklayacağınızı göstermektedir:
Aşağıda önceki işlemin sonucu yer almaktadır.

Bir satır içi düğümleri gibi, bir Run arasında yer alan içeriği de ayıklayabilirsiniz. Farklı paragraflar için işaretçiler olarak Runs geçilebilir. Aşağıdaki kod, aynı Paragraph düğümü arasında belirli metinlerin nasıl ayıklanacağını gösterir.
Aşağıdaki kod örneği, aynı paragrafta belirli çalıştırmalar arasında içeriği nasıl ayıklayacağınızı gösterir ExtractContent yöntemi:
Ayıklanan metin konsola gösterilir

Bir alanı bir işaretçi olarak kullanmak için FieldStart düğümü geçirilmelidir. ExtractContent yönteminin son parametresi, tüm alanın dahil edilip edilmeyeceğini tanımlamalıdır. Bir belge içinde “FullName” birleştirme alanı ve bir paragraf arasındaki içeriği ayıklayalım. Bu, [moveToMergeField](https://reference.aspose.com/words/java/com.aspose.words/documentbuilder/#moveToMergeField(java.lang.String) sınıfının DocumentBuilder yönteminin FieldStart düğümünü adından geçiren bir yöntemdir.
Eğer bizim durumumuz için son parametreyi ExtractContent yöntemine geçirilen false’e ayarlayalım ve alanı ayıklamayı hariç tutalım. Ayıklanan içeriği PDF olarak sunacağız.
Aşağıdaki kod örneğinde, ExtractContent yöntemini kullanarak belge içinde belirli bir alan ve paragraf arasındaki içeriği nasıl ayıklayacağınız gösterilmiştir:
Alan ve paragraf arasındaki ayıklanan içerik, alan ve paragraf işareti düğümleri pdf olarak oluşturulmuş.

Bir belgede, bir işaretleyici içinde tanımlanan içerik BookmarkStart ve BookmarkEnd düğümleri tarafından kapsüllenir. Bu iki düğüm arasındaki bulunan içerik işaretleyiciyi oluşturur. Başlangıç işaretçisi ile bitiş işaretçisi arasında yer alan her işaretçi, başka bir işaretliğin işaretçisi olarak geçebilir, hatta farklı işaretleyicilerde olabilirler, ancak başlangıç işaretçisi bitiş işaretçisinden önce belgede görünecek.
Örnek belge içinde, “Bookmark1” adlı bir imzajız var. Bu imzanın içeriği belgemizdeki vurgulanan içeriktir:

Aşağıdaki kod kullanarak bu içeriği yeni bir belgeye ayıklayacağız. IsInclusive parametre seçeneği, yer imlerini nasıl tutacağınızı veya atacağınızı gösterir.
Aşağıdaki kod örneği, bir yer iminin içeriğini ExtractContent yöntemini kullanarak nasıl ayıklayacağınızı göstermektedir:
Ayıklanan çıktı IsInclusive parametresi ile true olarak ayarlandı. Kopyada yer işareti de korunacak.

Çıkarılan çıktı ile IsInclusive parametresi false’e ayarlanmış. Kopyası içeriği içerir ama ekleme işaretlemesi olmadan.

Bir açıklama KommentRangeStart, KommentRangeEnd ve Komment düğümlerinden oluşur. Tüm bu düğümler dizedir. İlk iki düğüm yorum yapılan belgenin içeriğini kapsülleyen düğümlerdir, bunun ekran görüntüsü aşağıda gösterilmiştir.
Comment düğümü kendisinin bir InlineStory olarak paragraflar ve bölümler içerebilir. İnceleme penceresinde yorum kabarcığı olarak görülen mesajı temsil eder. Bu düğüm satır içi ve bir gövdenin nesnesi olduğu için bu mesaj içindeki içeriği de ayıklayabilirsiniz.
Aletimizde bir yorumumuz var. İnceleme sekmesinde gösterilen mark-up ile görüntüleyelim:

Yoruma başlık, ilk paragraf ve ikinci bölümde bulunan tablo kapsüllenir. Bu yorumu yeni bir belgeye ayıklayalım. IsInclusive seçeneği yorumun kendisinin korunup korunmayacağını belirtir.
Aşağıdaki kod örneğinin bunu nasıl yapılacağını gösterdiğini gösteriyor:
İlk olarak, parametre ayarı IsInclusive ile çıkarılan çıktı true’e. Kopyası, yorumu da içerecek.

İkinci olarak, İnclusive ayarlanmış ekstra çıktı false. Kopyası içerik içerir ancak yorum olmadan.

Aspose.Words yalnızca dinamik olarak oluşturma veya şablonları veri ile birleştirme yoluyla Microsoft Word belgeleri oluşturmak için değil, aynı zamanda başlıklar, altbilgiler, paragraflar, tablolar, resimler ve diğerleri gibi ayrı belge öğelerini ayıklamak için ayrıştırmak üzere de kullanılabilir. Başka bir mümkün görev tüm özel biçimlendirme veya stil içeren metinleri bulmaktır.
Bu kullanım durumunu uygulamak için DocumentVisitor sınıfını kullanın. Bu sınıf iyi bilinen Ziyaretçi tasarım desenine karşılık gelir. DocumentVisitor ile, belge ağacında yineleme gerektiren özel işlemleri tanımlayabilir ve uygulayabilirsiniz.
DocumentVisitor belirli bir belge öğesi (düğüm) karşılaştığında çağrılan bir dizi VisitXXX yöntemini sağlar. Örneğin, “VisitParagraphStart” bir metin paragrafının başlangıcını bulduğunda ve “VisitParagraphEnd” bir metin paragrafının bitişini bulduğunda çağrılır. Her DocumentVisitor.VisitXXX yöntemi karşılaştığı ilgili nesneyi kabul eder böylece ihtiyacınız olan şekilde kullanabilirsiniz (örneğin biçimlendirmeyi al) örneğin hem VisitParagraphStart hem de VisitParagraphEnd bir Paragraph nesnesini kabul eder.
Her DocumentVisitor.VisitXXX yöntemi, düğümlerin sıralanmasını kontrol eden bir VisitorAction değeri döndürür. Devam etmemeyi, geçerli düğüme atlamayı (ama sıralamanın devam etmesini) veya düğümlerin sıralamasını durdurmayı talep edebilirsiniz.
Bu, programlı olarak bir belgeden çeşitli parçaların belirlenmesi ve çıkarılması için izlenmesi gereken adımlardır:
DocumentVisitor tüm DocumentVisitor.VisitXXX yöntemleri için varsayılan uygulamalar sağlar. Bu, yeni belge ziyaretçilerinin oluşturulmasını kolaylaştırır çünkü yalnızca belirli bir ziyaretçi için gerekli olan yöntemlerin geçersiz kılınması gerekir. Tüm ziyaretçi yöntemlerinin geçersiz kılınmasına gerek yoktur.
Aşağıdaki örnek, Aspose.Words nesne modeline yeni işlemler eklemek için Ziyaretçi deseninin nasıl kullanılacağını göstermektedir. Bu durumda, basit bir metin biçimine dönüştürmek için bir belge dönüştürücüsü oluşturuyoruz:
Metni belgezdenden almak için yollar şunlardır:
SaveFormat.Text parametresini geçirin. İçsel olarak bu metin olarak kaydetme bir bellek akışına çağrıda bulunur ve sonuçtaki dize döndürülürNode.GetText ve Node.ToString kullanmakBir Word belgesinde alan, hücre sonu, bölüm sonu vb. gibi özel öğeleri belirten kontrol karakterleri içerebilir. Olası Word kontrol karakterleri kümesinin tamamı ControlChar sınıfında tanımlanmıştır. GetText yöntemi, düğümdeki tüm kontrol karakterlerinin bulunduğu metni döndürür.
Calling ToString döndürür sadece kontrol karakterleri olmadan belge için düz metin gösterimini." “Düz metin olarak dışa aktarma hakkında daha fazla bilgi için Using SaveFormat.Text bakın.
Aşağıdaki kod örneği, bir düğümde GetText ve ToString yöntemlerini çağırmanın arasındaki farkı göstermektedir:
SaveFormat.Text kullanmakBu örnek, belgeri şu şekilde kaydeder:
Aşağıdaki kod örneği bir belgenin TXT formatında nasıl kaydedileceğini göstermektedir:
Belge resimlerini ayıklamak bazı görevleri gerçekleştirmek için gerekebilir. Aspose.Words bunu yapmanıza da izin verir.
Aşağıdaki kod örneği bir belgeden nasıl resim ayıklanacağını gösterir:
Analyzing your prompt, please hold on...
An error occurred while retrieving the results. Please refresh the page and try again.