Пример #1
0
        private static void geSummaryXmlRecurse_(XmlInstanceApi api, string instance, ref HashSet <string> summary, bool includeRelations = true)
        {
            summary.Add(prepair_(instance));

            if (!includeRelations)
            {
                return;
            }

            string         instId    = XmlInstanceApi.GetInstanceIdFromXmlInstance(instance);
            IList <string> relations = api.ReadRelationshipInstances(instId);

            foreach (string relation in relations)
            {
                string sourceId, targetId;
                XmlInstanceApi.GetInstanceIdsFromXmlRelationshipInstance(
                    relation, out sourceId, out targetId);

                string sourceInst = api.ReadInstance(sourceId);
                string targetInst = api.ReadInstance(targetId);

                foreach (string subInst in new string[] { sourceInst, targetInst })
                {
                    string xmlData = prepair_(subInst);
                    if (!summary.Contains(xmlData))
                    {
                        summary.Add(xmlData);
                        geSummaryXmlRecurse_(api, subInst, ref summary, includeRelations);
                    }
                }
            }
        }
Пример #2
0
        public static IEnumerable <string> getSp3dXmlData(Element element, bool includeRelations = true)
        {
            var summary     = new HashSet <string>();
            var modelSchema = new XmlInstanceSchemaManager(element.ModelRef);

            XmlInstanceApi api       = XmlInstanceApi.CreateApi(modelSchema);
            IList <string> instances = api.ReadInstances(element.ElementRef);

            foreach (string inst in instances)
            {
#if DEBUG
                //geSummaryXmlRecurse_(api, inst, ref summary, includeRelations);
                //continue;
#endif

                summary.Add(prepair_(inst));

                if (!includeRelations)
                {
                    continue;
                }

                string         instId    = XmlInstanceApi.GetInstanceIdFromXmlInstance(inst);
                IList <string> relations = api.ReadRelationshipInstances(instId);

                foreach (string relation in relations)
                {
                    string sourceId, targetId;
                    XmlInstanceApi.GetInstanceIdsFromXmlRelationshipInstance(
                        relation, out sourceId, out targetId);

                    string sourceInst = api.ReadInstance(sourceId);
                    string targetInst = api.ReadInstance(targetId);

                    foreach (string subInst in new string[] { sourceInst, targetInst })
                    {
                        summary.Add(prepair_(subInst));
                    }
                }
            }
            return(summary);
        }