using System; using System.Collections.Generic; using System.Text; using System.Xml; using VEPROMS.CSLA.Library; namespace Volian.Print.Library { public class CPSGen { private vlnParagraph _MyVlnParagraph; public vlnParagraph MyVlnParagraph { get { return _MyVlnParagraph; } set { _MyVlnParagraph = value; } } public CPSGen(vlnParagraph myParagraph) { _MyVlnParagraph = myParagraph; } public void Generate(string fileName) { XmlDocument xd = new XmlDocument(); XmlElement parent = xd.AppendChild(xd.CreateElement("Items")) as XmlElement; Generate(0, 0,parent, MyVlnParagraph); xd.Save(fileName); } public void Generate(int level,int fromType,XmlElement parent, vlnParagraph para) { ItemInfo itm = para.MyItemInfo; XmlElement xe = parent.AppendChild(parent.OwnerDocument.CreateElement("Item")) as XmlElement; AddAttribute(xe, "Level", level); AddAttribute(xe, "FromType", fromType); AddAttribute(xe, "Ordinal", itm.Ordinal); AddAttribute(xe, "ParentID", (itm.ActiveParent as ItemInfo).ItemID); //AddAttribute(xe, "Xoffset", para.XOffset); AddAttribute(xe, "ItemID", itm.ItemID); AddAttribute(xe, "PreviousID", itm.PreviousID); AddAttribute(xe, "ContentID", itm.ContentID); AddAttribute(xe, "DTS", itm.MyContent.DTS); AddAttribute(xe, "UserID", itm.MyContent.UserID); AddAttribute(xe, "Number", itm.MyContent.Number); AddAttribute(xe, "Text", itm.MyContent.Text); AddAttribute(xe, "Type", itm.MyContent.Type); AddAttribute(xe, "FormatID", itm.MyContent.FormatID); AddAttribute(xe, "Config", itm.MyContent.Config); AddAttribute(xe, "Rtf", para.Rtf); //AddParts(xe, "PartsAbove", para.PartsAbove); //AddParts(xe, "PartsLeft", para.PartsLeft); //AddParts(xe, "PartsRight", para.PartsRight); //AddParts(xe, "PartsBelow", para.PartsBelow); AddChildren(level,0, parent, "ChildrenAbove", para.ChildrenAbove); AddChildren(level,0, parent, "ChildrenLeft", para.ChildrenLeft); AddChildren(level,0, parent, "ChildrenRight", para.ChildrenRight); AddChildren(level,0, parent, "ChildrenBelow", para.ChildrenBelow); } private void AddChildren(int level, int fromType, XmlElement parent, string name, vlnParagraphs children) { if (children == null || children.Count == 0) return; //XmlElement xchildren = xe.OwnerDocument.AppendChild(xe.OwnerDocument.CreateElement(name)) as XmlElement; foreach(vlnParagraph child in children) { //XmlElement xechild = xe.ParentNode.AppendChild(xe.OwnerDocument.CreateElement("Item")) as XmlElement; Generate(level+1,0,parent,child); } } //private void AddParts(XmlElement xe, string name, vlnPrintObjects parts) //{ // if (parts == null || parts.Count == 0) return; // XmlElement xpart = xe.AppendChild(xe.OwnerDocument.CreateElement(name)) as XmlElement; // foreach (vlnPrintObject part in parts) // { // XmlElement xechild = xpart.AppendChild(xe.OwnerDocument.CreateElement(part.GetType().Name)) as XmlElement; // Generate(xechild, part); // } //} //private void Generate(XmlElement xe, vlnPrintObject part) //{ // AddAttribute(xe, "Xoffset", part.XOffset); // AddAttribute(xe, "Width", part.Width); // AddAttribute(xe, "Rtf", part.Rtf); //} private void AddAttribute(XmlElement xe, string attr, object val) { if (val == null) return; XmlAttribute xa = xe.OwnerDocument.CreateAttribute(attr); xa.Value = val.ToString(); xe.Attributes.Append(xa); } } }