Hogyan dolgozzunk egyedi XML jelölőnyelvvel a .NET-ban

Hogyan dolgozzunk egyedi XML jelölőnyelvvel a .NET-ban

Hogyan dolgozzunk egyéni XML jelöléssel a .NET

Egy Word-dokumentum hordozhat egyéni XML adatot a látható tartalma mellett — olyan adatot, amelyet tartalomvezérlők kötésére, alkalmazás-specifikus metaadatok tárolására vagy egy másik alkalmazás által hozzáadott részek beágyazására használnak. Ez az útmutató bemutatja, hogyan olvassuk be ezeket az adatokat, hogyan adjunk hozzá új egyéni XML részeket, és hogyan vizsgáljuk meg a régi okos címkéket, amelyeket a régebbi dokumentumok még tartalmazhatnak, a CustomXmlPart, CustomXmlProperty és SmartTag használatával a Aspose.Words FOSS-ban a .NET számára.


Lépésről lépésre útmutató

1. lépés: Egyéni XML adatok olvasása egy dokumentumból

Document.CustomXmlParts egy CustomXmlPartCollection-t ad vissza — ugyanazt a mechanizmust, amelyet a Word a XML-leképezett tartalomvezérlők támogatására használ. Iterálja a gyűjteményt, vagy hívja meg a GetById(id)-t, ha már tudja, melyik részre van szüksége, hogy egy CustomXmlPart-t kapjon. Minden rész tartalmazza a Id-t, egy Data bájt tömböt, amely a nyers XML-t tartalmazza, egy DataChecksum-t az adatváltozás felismerésére teljes bájt összehasonlítás nélkül, és Schemas — egy CustomXmlSchemaCollection, amely felsorolja a hozzá kapcsolódó XML sémákat.


2. lépés: Egyéni XML rész hozzáadása vagy frissítése

Hívja meg a CustomXmlPartCollection.Add(id, xml) egy azonosító karakterlánccal és a XML tartalommal, hogy közvetlenül létrehozzon egy részt, vagy különállóan építsen fel egy CustomXmlPart és adja át a Add(part). Adatok eltávolításához használja a RemoveAt(index) egy adott pozíción, vagy a Clear() minden rész eldobásához. Egyedi XML adatok másolásakor dokumentumok között, használja a CustomXmlPart.Clone() (vagy a gyűjtemény Clone()) a forrásrészen a nyers XML újraolvasása és újra hozzáadása helyett, majd adja hozzá a klónt a céldokumentum Document.CustomXmlParts-éhez.


3. lépés: Kezelje a részhez kapcsolódó sémákat

CustomXmlPart.Schemas elér egy CustomXmlSchemaCollection-t, amely a részhez kapcsolódó sémák URI-it egyszerű karakterláncként, nem pedig elemzett sémaobjektumként követi. Használja a Add(value)-t egy séma URI regisztrálásához, a Remove(name) vagy a RemoveAt(index)-t egy eltávolításához, a IndexOf(value)-t egy megtaláláshoz, és a Clear()-t mindegyik eltávolításához. A Count jelzi, hogy hány séma URI van jelenleg a részhez kapcsolódva.


4. lépés: Dolgozzon a csomagszintű egyedi részekkel

Nem minden láthatatlan rész egy OOXML csomagban egyedi XML. A Document.PackageCustomParts egy CustomPartCollection típusú CustomPart objektumot ad vissza – tetszőleges részeket, amelyeket a csomag tárol, például olyan részeket, amelyeket egy másik alkalmazás adott hozzá a fájlhoz. Minden CustomPart rendelkezik egy Name, egy ContentType, egy RelationshipType, egy Data bájt tömbbel, és egy IsExternal jelzővel, amely azt mutatja, hogy külső hivatkozásról van-e szó a beágyazott tartalom helyett. A Add(part), RemoveAt(index) és Clear() ugyanúgy kezelik a gyűjteményt, mint a CustomXmlPartCollection. Ellenőrizze a PackageCustomParts-ot – ne a CustomXmlParts-ot – amikor egy olyan részt, amelynek a dokumentumnak tartalmaznia kellene, nem jelenik meg az egyedi XML gyűjteményben.


5. lépés: Vizsgálja meg a régi okos címkéket és azok tulajdonságait

SmartTag egy csomópont típus (NodeType.SmartTag, amelyet a SmartTag(doc) hoz létre), amely egy régi Word okos címkét képvisel, amely felismert szöveg köré van csomagolva. Ellenőrizze a Element és a Uri együtt, hogy meghatározza, melyik felismerő hozta létre a címkét, majd olvassa a Properties-t — egy CustomXmlPropertyCollection — a struktúrált adatokért, amelyet a felismerő csatolt. Egy CustomXmlPropertyCollection belsejében az indexelő (pl. properties["MyProp"]) vagy a Contains(name) keresi egy adott tulajdonságot, a IndexOfKey(name) visszaadja annak pozícióját, és a Remove(name)/RemoveAt(index)/Clear() eltávolítja a bejegyzéseket; minden CustomXmlProperty a CustomXmlProperty(name, uri, value)-kel van felépítve, és a Name, Uri és Value-et teszi elérhetővé. Mivel a SmartTag a CompositeNode-ból származik, ezért részt vesz a dokumentumfa struktúrájában is, mint a többi csomópont, támogatva a Accept(visitor), AcceptStart(visitor) és AcceptEnd(visitor)-t a DocumentVisitor alapú bejáráshoz.


Gyakori problémák és megoldások

CustomXmlPartCollection.GetById(id) nem ad felhasználható eredményt. Az azonosító nem egyezik meg jelenleg benne lévő egyetlen részével Document.CustomXmlParts. Sorolja fel a gyűjteményt, hogy megerősítse az azonosító jelenlétét, vagy először adja hozzá a részt a következővel Add(id, xml).

Egy másik alkalmazás által hozzáadott részt nem találja meg az iterálás CustomXmlParts. A nem-XML csomagrészek a következőn keresztül érhetők el Document.PackageCustomParts, nem CustomXmlParts. Ellenőrizze PackageCustomParts (a CustomPartCollection) helyett.

SmartTag.Properties üres, mégis a címke egyértelműen jelen van. Nem minden okos címke felismerő csatolja a strukturált tulajdonságokat. Ellenőrizze SmartTag.Element and Uri annak megerősítésére, hogy melyik felismerő hozta létre a címkét, mielőtt feltételeznénk, hogy a specifikus tulajdonságok jelen lesznek.

Az egyéni XML adatok nem tűnnek összefüggőnek azzal a tartalomvezérlővel, amelyhez kötve kellene lenniük. A tartalomvezérlők a saját adatkötés-konfigurációjukon keresztül kötődnek az egyéni XML elemekhez, nem automatikusan mindenhez. CustomXmlPart in Document.CustomXmlParts. Ellenőrizze, hogy egy adott tartalomvezérlő melyik részhez van valójában kötve, ahelyett, hogy egy-egy kapcsolatot feltételezne.


Gyakran Ismételt Kérdések

Hogyan adhatok egyedi XML adatot egy dokumentumhoz?

Hívja meg a Document.CustomXmlParts.Add(id, xml) függvényt egy azonosító karakterlánccal és XML tartalommal, vagy készítsen külön egy CustomXmlPart objektumot, és adja át a Add(part) számára.

Mi a különbség a CustomXmlPart és a CustomXmlProperty között?

CustomXmlPart egy teljes XML adat-sziget — egy bájt-tömb payload és a kapcsolódó sémák — amelyet a Document.CustomXmlParts útján érhetünk el. CustomXmlProperty egyetlen név/érték pár, amelyet általában a SmartTag.Properties útján érnek el, nem közvetlenül a dokumentumból.

Hogyan másolhatok egyéni XML adatot az egyik dokumentumból a másikba?

Hívja meg a Clone() függvényt a forrás CustomXmlPart objektumon, majd adja hozzá a klónt a cél dokumentum Document.CustomXmlParts eleméhez a Add(part) segítségével.

Mi az a SmartTag, és mikor találkozhatok vele?

SmartTag egy régi Word funkció, amely a szöveget jelöli, amelyet egy intelligens címke felismerő azonosít és becsomagol — egy dokumentumcsomópont (NodeType.SmartTag) egy Element és Uri segítségével, amelyek a felismerőt azonosítják, valamint egy Properties gyűjtemény CustomXmlProperty értékekkel. Olyan dokumentumokban jelenik meg, amelyekben a régebbi Word verziókban engedélyezve voltak az intelligens címkék.

Hogyan tudhatom meg, hogy egy dokumentumnak hány egyéni XML része vagy csomagrésze van?

Olvassa el a Count a Document.CustomXmlParts (egy CustomXmlPartCollection) vagy a Document.PackageCustomParts (egy CustomPartCollection) esetén.


Lásd még:

 Magyar