Práce s vlastním XML značkováním

Práce s vlastním XML značkováním

Práce s vlastním XML značkováním

Tento průvodce ukazuje, jak číst a spravovat vlastní XML data, která může dokument Word nést vedle svého viditelného obsahu— data používaná k propojení ovládacích prvků obsahu, ukládání metadat specifických pro aplikaci nebo vložení libovolných částí balíčku. Document.CustomXmlParts zpřístupňuje na úrovni dokumentu vlastní XML data a Document.PackageCustomParts zpřístupňuje vlastní části na úrovni balíčku, které nejsou specificky vlastní XML.


Vlastní části XML

CustomXmlPart představuje jeden vlastní XML datový ostrov připojený k dokumentu— stejný mechanismus, který Word používá k podpoře XML-mapovaných ovládacích prvků obsahu. Každá část má Id, Data bajtové pole obsahující surové XML, DataChecksum a vlastnost Schemas (CustomXmlSchemaCollection) uvádějící XML schémata s ní spojená. Document.CustomXmlParts vrací CustomXmlPartCollection: Add(part) připojí existující CustomXmlPart, Add(id, xml) vytvoří jeden přímo z ID a řetězce XML, GetById(id) načte konkrétní část a RemoveAt(index)/Clear() odstraňují části. Jak CustomXmlPart, tak CustomXmlPartCollection zpřístupňují Clone() pro duplikování vlastních XML dat, například při kopírování obsahu mezi dokumenty.

Vlastní schémata XML

CustomXmlSchemaCollection, dosažený přes CustomXmlPart.Schemas, uvádí URI schémat spojených s vlastní částí XML. Podporuje Add(value), Remove(name), RemoveAt(index), IndexOf(value), Clear() a Clone(), spolu s vlastností Count— URI schémat jsou sledovány jako prosté řetězce místo analyzovaných objektů schématu.

Vlastní vlastnosti XML

Odděleně od CustomXmlPart představuje CustomXmlProperty jedinou vlastnost XML typu název/hodnota, vytvořenou pomocí CustomXmlProperty(name, uri, value) a vystavující Name, Uri a Value. CustomXmlPropertyCollection spravuje sadu těchto položek: Add(property) přidá jednu, indexer (např. properties["MyProp"]) ji vyhledá podle názvu a Contains(name) testuje, zda je přítomna, IndexOfKey(name) vrací její pozici a Remove(name)/RemoveAt(index)/Clear() odstraňují položky. SmartTag.Properties vrací CustomXmlPropertyCollection, což je způsob, jakým je strukturovaná data staršího inteligentního tagu reprezentována (viz níže).

Vlastní části na úrovni balíčku

Document.PackageCustomParts vrací CustomPartCollection CustomPart objektů — libovolné části uložené v balíčku OOXML, které nejsou vlastními daty XML, například části přidané jinými aplikacemi, které soubor upravily. Každý CustomPart má Name, ContentType, RelationshipType, pole bajtů Data a příznak IsExternal, který udává, zda je část externí referencí místo vloženého obsahu. Kolekce podporuje Add(part), RemoveAt(index), Clear() a Clone(), spolu s Count.

Staré inteligentní značky

SmartTag je typ uzlu (NodeType.SmartTag) představující starý Word inteligentní tag ovinutý kolem rozpoznaného textu. SmartTag je vytvořen pomocí SmartTag(doc) a vystavuje Element (název elementu rozpoznávače) a Uri (jmenný prostor rozpoznávače), spolu s Properties — CustomXmlPropertyCollection držící strukturovaná data, která rozpoznávač připojil k označenému textu. Protože SmartTag je uzel, podílí se také na stromu dokumentu jako ostatní uzly a podporuje Accept(visitor), AcceptStart(visitor) a AcceptEnd(visitor) pro průchod založený na DocumentVisitor.

MarkupLevel

MarkupLevel je výčet — Unknown, Inline, Block, Row, Cell — popisující strukturální úroveň ve stromu dokumentu, ve které může nastat značkový prvek, jako je strukturovaná značka dokumentu.


Tipy a osvědčené postupy

  • Použijte CustomXmlPartCollection.GetById(id) místo ručního procházení kolekce, když znáte ID požadované části.
  • Přečtěte CustomXmlPart.DataChecksum, abyste zjistili, zda se podkladová data XML změnila, aniž byste prováděli úplné porovnání bajtů.
  • Rozlišujte Document.CustomXmlParts (vlastní data XML, často svázaná s ovládacími prvky obsahu) od Document.PackageCustomParts (libovolné ne-XML části balíčku) — mají odlišné účely a jsou uloženy odděleně.
  • Při práci se staršími dokumenty, které používají chytré značky, zkontrolujte SmartTag.Element a Uri společně, abyste určili, který rozpoznávač vytvořil značku, než se spolehnete na její Properties.
  • Klonujte vlastní části XML pomocí CustomXmlPart.Clone() (nebo Clone() kolekce) při kopírování dat mezi dokumenty místo opětovného načítání a přidávání surových XML.

Běžné problémy

ProblémPříčinaOprava
CustomXmlPartCollection.GetById(id) nevrací nic použitelnéhoID neodpovídá žádné části v současné době v Document.CustomXmlPartsProjděte kolekci, abyste potvrdili ID, nebo nejprve přidejte část pomocí Add(id, xml)
Vlastní data XML se zdají být nesouvisející se zobrazitelnými ovládacími prvky obsahuOvládací prvky obsahu se vážou na vlastní XML prostřednictvím své vlastní konfigurace datového vazby, nikoli automaticky ke každému CustomXmlPartPotvrďte, ke které části je daný ovládací prvek obsahu připojen, místo aby se předpokládal vztah 1:1 s Document.CustomXmlParts
Část balíčku přidaná jinou aplikací nebyla nalezena v CustomXmlPartsČásti balíčku, které nejsou XML, jsou zpřístupněny přes Document.PackageCustomParts, nikoli CustomXmlPartsZkontrolujte PackageCustomParts (a CustomPartCollection) místo toho
SmartTag.Properties je prázdnýNe každý rozpoznávač chytrých štítků připojuje strukturované vlastnostiZkontrolujte SmartTag.Element/Uri, abyste potvrdili, který rozpoznávač vytvořil štítek, než budete očekávat konkrétní vlastnosti

FAQ

Jaký je rozdíl mezi CustomXmlPart a CustomXmlProperty?

CustomXmlPart je celý XML datový ostrov (s payloadem ve formě pole bajtů a souvisejícími schématy), dosažitelný přes Document.CustomXmlParts. CustomXmlProperty je jeden pár název/hodnota, typicky dosažitelný přes SmartTag.Properties spíše než přímo z dokumentu.

Jak mohu přidat vlastní XML data do dokumentu?

Zavolejte Document.CustomXmlParts.Add(id, xml) s řetězcem id a obsahem XML, nebo vytvořte CustomXmlPart samostatně a předáte jej Add(part).

Co jsou vlastní části balíčku a jak se liší od vlastních částí XML?

Document.PackageCustomParts (a CustomPartCollection of CustomPart objects) obsahuje libovolné OOXML části balíčku, které nejsou vlastní XML — každá s ContentType, RelationshipType a surovým Data. Document.CustomXmlParts je specificky pro vlastní XML datové ostrovy.

Co je SmartTag?

SmartTag je starší funkce Wordu, která představuje text rozpoznaný a zabalený rozpoznávačem chytrých štítků. Je to uzel dokumentu (NodeType.SmartTag) s Element a Uri identifikujícími rozpoznávač a Properties kolekcí CustomXmlProperty hodnot, které rozpoznávač připojil.

Jak mohu zkopírovat vlastní XML data mezi dokumenty?

Použijte CustomXmlPart.Clone() na zdrojové části, pak přidejte klon do Document.CustomXmlParts cílového dokumentu s Add(part).


API Reference Shrnutí

Třída/MetodaPopis:
CustomXmlPartJeden vlastní XML datový ostrov připojený k dokumentu
Document.CustomXmlPartsCustomXmlPartCollection všech vlastních XML částí v dokumentu
CustomXmlPartCollection.Add(id, xml) / GetById(id)Přidat nebo načíst vlastní část XML podle id
CustomXmlSchemaCollectionURI schémat spojené s CustomXmlPart
CustomXmlPropertyJedna vlastnost XML název/hodnota
CustomXmlPropertyCollectionKolekce hodnot CustomXmlProperty, např. na SmartTag.Properties
Document.PackageCustomPartsThe CustomPartCollection libovolných ne-XML OOXML balíčkových částí
CustomPartJedna část na úrovni balíčku s Name, ContentType a surovým Data
SmartTagZastaralý typ uzlu obalující text rozpoznaný rozpoznávačem chytrých značek
MarkupLevelEnum popisující, kde se může prvek značkování vyskytovat ve stromu dokumentu

Viz také:

 Čeština