Özel XML İşaretlemesi ile .NET'de Nasıl Çalışılır
Özel XML İşaretlemesiyle .NET’de Nasıl Çalışılır
Bir Word belgesi, görünür içeriğinin yanı sıra özel XML verisi taşıyabilir — içerik denetimlerini bağlamak, uygulamaya özgü üst verileri depolamak veya başka bir uygulama tarafından eklenen bölümleri gömmek için kullanılan veri. Bu kılavuz, bu veriyi nasıl okuyacağınızı, yeni özel XML bölümleri nasıl ekleyeceğinizi ve eski belgelerde hâlâ bulunabilecek eski akıllı etiketleri nasıl inceleyeceğinizi, Aspose.Words FOSS içinde CustomXmlPart, CustomXmlProperty ve SmartTag kullanarak, .NET için gösterir.
Adım Adım Kılavuz
Adım 1: Bir Belgeden Özel XML Verisini Oku
Document.CustomXmlParts bir CustomXmlPartCollection döndürür — Word’ün XML eşlenen içerik denetimlerini desteklemek için kullandığı aynı mekanizma. Koleksiyonu yineleyin, ya da ihtiyacınız olan bölümü zaten bildiğinizde GetById(id)‘yi çağırın, bir CustomXmlPart elde etmek için. Her bölüm Id‘i ortaya çıkarır, ham XML tutan bir Data bayt dizisi, tam bayt karşılaştırması yapmadan verinin değişip değişmediğini tespit etmek için bir DataChecksum, ve Schemas — ona bağlı XML şemalarını listeleyen bir CustomXmlSchemaCollection.
Adım 2: Özel XML Bölümünü Ekle veya Güncelle
Bir kimlik dizesi ve XML içeriğiyle CustomXmlPartCollection.Add(id, xml) çağırarak bir bölümü doğrudan oluşturabilir veya ayrı olarak bir CustomXmlPart oluşturup Add(part)‘ye geçirebilirsiniz. Verileri kaldırmak için belirli bir konumda RemoveAt(index) kullanın veya tüm bölümleri silmek için Clear()‘ı kullanın. Özel XML verilerini belgeler arasında kopyalarken, ham XML’yi yeniden okuyup eklemek yerine kaynak bölümde CustomXmlPart.Clone() (veya koleksiyonun Clone()) kullanın, ardından klonu hedef belgenin Document.CustomXmlParts‘ine ekleyin.
Adım 3: Bir Bölümle İlişkili Şemaları Yönetin
CustomXmlPart.Schemas, bölümle ilişkili şema URI’larını ayrıştırılmış şema nesneleri yerine düz dize olarak izleyen bir CustomXmlSchemaCollection‘a ulaşır. Bir şema URI’sı kaydetmek için Add(value), bir tanesini düşürmek için Remove(name) veya RemoveAt(index), bir tanesini bulmak için IndexOf(value) ve hepsini kaldırmak için Clear() kullanın. Count, şu anda bölümle ilişkili olan şema URI sayısını rapor eder.
Adım 4: Paket Düzeyinde Özel Bölümlerle Çalışma
OOXML paketindeki her görünmez bölüm özel XML değildir. Document.PackageCustomParts, paket içinde depolanan, örneğin dosyaya dokunan başka bir uygulama tarafından eklenen bölümler gibi, CustomPart nesnelerinden oluşan bir CustomPartCollection döndürür. Her CustomPart, bir Name, bir ContentType, bir RelationshipType, bir Data bayt dizisi ve gömülü içerik yerine harici bir referans olup olmadığını gösteren bir IsExternal bayrağı içerir. Add(part), RemoveAt(index) ve Clear(), koleksiyonu CustomXmlPartCollection ile aynı şekilde yönetir. Belgenizin taşıması gereken bir bölüm özel XML koleksiyonunda görünmüyorsa, PackageCustomParts — CustomXmlParts değil — kontrol edin.
Adım 5: Eski Akıllı Etiketleri ve Özelliklerini İnceleme
SmartTag, tanınan metnin etrafına sarılmış eski bir Word akıllı etiketi temsil eden bir düğüm türüdür (NodeType.SmartTag, SmartTag(doc) ile oluşturulmuş). Element ve Uri‘ü birlikte kontrol ederek etiketin hangi tanıyıcı tarafından oluşturulduğunu belirleyin, ardından tanıyıcının eklediği yapılandırılmış veri için Properties — bir CustomXmlPropertyCollection — okuyun. CustomXmlPropertyCollection içinde, indeksleyici (ör. properties["MyProp"]) veya Contains(name) belirli bir özelliği arar, IndexOfKey(name) konumunu döndürür ve Remove(name)/RemoveAt(index)/Clear() girdileri kaldırır; her CustomXmlProperty, CustomXmlProperty(name, uri, value) ile oluşturulur ve Name, Uri ve Value‘i ortaya çıkarır. SmartTag, CompositeNode‘den türediği için diğer düğümler gibi belge ağacına da katılır, DocumentVisitor tabanlı gezinme için Accept(visitor), AcceptStart(visitor) ve AcceptEnd(visitor)‘i destekler.
Yaygın Sorunlar ve Çözümler
CustomXmlPartCollection.GetById(id) kullanılabilir bir şey döndürmez. Kimlik şu anda bulunan hiçbir parçayla eşleşmiyor Document.CustomXmlParts. Kimliğin mevcut olduğunu doğrulamak için koleksiyonu enumerate edin, ya da parçayı önce şu şekilde ekleyin Add(id, xml).
Başka bir uygulama tarafından eklenen bir parça, iterating ile bulunamaz CustomXmlParts. Non-XML paket parçaları şunun aracılığıyla ortaya çıkar Document.PackageCustomParts, değil CustomXmlParts. Kontrol edin PackageCustomParts (a CustomPartCollection) yerine.
SmartTag.Properties etiketi açıkça mevcut olmasına rağmen boş. Her akıllı etiket tanıyıcı yapılandırılmış özellikler eklemez. Kontrol edin SmartTag.Element and Uri belirli özelliklerin mevcut olacağını varsaymadan önce, etiketi hangi tanıyıcının oluşturduğunu doğrulamak için.
Özel XML verisi bağlanması gereken içerik kontrolüyle ilgili görünmüyor. İçerik kontrolleri, kendi veri bağlama yapılandırmaları aracılığıyla özel XML ile bağlanır, otomatik olarak her birine bağlanmaz. CustomXmlPart in Document.CustomXmlParts. Belirli bir içerik kontrolünün gerçekte hangi bölüme bağlandığını, bire bir ilişki varsaymak yerine doğrulayın.
Sık Sorulan Sorular
Özel XML verilerini bir belgeye nasıl eklerim?
Document.CustomXmlParts.Add(id, xml)‘ı bir kimlik dizesi ve XML içeriğiyle çağırın, ya da ayrı olarak bir CustomXmlPart oluşturup Add(part)‘ye iletin.
CustomXmlPart ile CustomXmlProperty arasındaki fark nedir?
CustomXmlPart, tüm bir XML veri adasıdır — bayt-dizisi yükü ve ilişkili şemalar — Document.CustomXmlParts aracılığıyla erişilir. CustomXmlProperty, tek bir ad/değer çifti olup, genellikle doğrudan belge üzerinden değil SmartTag.Properties aracılığıyla erişilir.
Özel XML verisini bir belgeden diğerine nasıl kopyalarım?
Kaynak CustomXmlPart üzerinde Clone() çağırın, ardından klonu hedef belgenin Document.CustomXmlParts kısmına Add(part) ile ekleyin.
Bir SmartTag nedir ve ne zaman karşılaşırım?
SmartTag, akıllı etiket tanıyıcısı tarafından tanınan ve sarılan metni temsil eden eski bir Word özelliğidir — tanıyıcıyı tanımlayan bir Element ve Uri içeren bir belge düğümü (NodeType.SmartTag), ayrıca CustomXmlProperty değerlerinden oluşan bir Properties koleksiyonu. Akıllı etiketler eski Word sürümlerinde etkinleştirilmiş olarak oluşturulmuş veya düzenlenmiş belgelerde ortaya çıkar.
Bir belgenin kaç özel XML parçası veya paket parçası olduğunu nasıl öğrenebilirim?
Document.CustomXmlParts üzerindeki Count‘ı (bir CustomXmlPartCollection) ya da Document.PackageCustomParts‘ü (bir CustomPartCollection) sırasıyla okuyun.