System.IO.Packaging.Package.WriteRelationships C# (CSharp) Méthode

WriteRelationships() static private méthode

static private WriteRelationships ( PackageRelationship>.Dictionary relationships, Stream stream ) : void
relationships PackageRelationship>.Dictionary
stream Stream
Résultat void
        internal static void WriteRelationships(Dictionary<string, PackageRelationship> relationships, Stream stream)
        {
            XmlDocument doc = new XmlDocument();
            XmlNamespaceManager manager = new XmlNamespaceManager(doc.NameTable);
            manager.AddNamespace("rel", RelationshipNamespace);

            doc.AppendChild(doc.CreateNode(XmlNodeType.XmlDeclaration, "", ""));

            XmlNode root = doc.CreateNode(XmlNodeType.Element, "Relationships", RelationshipNamespace);
            doc.AppendChild(root);

            foreach (PackageRelationship relationship in relationships.Values)
            {
                XmlNode node = doc.CreateNode(XmlNodeType.Element, "Relationship", RelationshipNamespace);

                XmlAttribute idAtt = doc.CreateAttribute("Id");
                idAtt.Value = relationship.Id;
                node.Attributes.Append(idAtt);

                XmlAttribute targetAtt = doc.CreateAttribute("Target");
                targetAtt.Value = relationship.TargetUri.ToString();
                node.Attributes.Append(targetAtt);

                if (relationship.TargetMode != TargetMode.Internal)
                {
                    XmlAttribute modeAtt = doc.CreateAttribute("TargetMode");
                    modeAtt.Value = relationship.TargetMode.ToString();
                    node.Attributes.Append(modeAtt);
                }
                XmlAttribute typeAtt = doc.CreateAttribute("Type");
                typeAtt.Value = relationship.RelationshipType;
                node.Attributes.Append(typeAtt);

                root.AppendChild(node);
            }

            using (XmlTextWriter writer = new XmlTextWriter(stream, System.Text.Encoding.UTF8))
                doc.WriteTo(writer);
        }

Usage Example

        void WriteRelationships()
        {
            bool exists = Package.PartExists(RelationshipsPartUri);

            if (exists && Relationships.Count == 0)
            {
                Package.DeletePart(RelationshipsPartUri);
                return;
            }

            if (!exists)
            {
                PackagePart part = Package.CreatePart(RelationshipsPartUri, Package.RelationshipContentType);
                part.IsRelationship = true;
            }
            using (Stream s = Package.GetPart(RelationshipsPartUri).GetStream())
                Package.WriteRelationships(Relationships, s);
        }