⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 rdlcaddchildelement.cs

📁 微软报表解析器语言生成器。选择微软的报表之后可以把每个节点生成一个实体类
💻 CS
字号:
using System;
using System.Collections.Generic;
using System.Text;
using System.Xml;

namespace MSReport
{
    public class RDLCAddChildElement : RDLCElement, IRDLCElement
    {
        public RDLCAddChildElement()
        {

        }
        public override string Create(XmlNode xnode)
        {
            this.ActXNode = xnode;
            this.XMLString = @"";
            foreach (XmlNode xmlnode in this.ActXNode.ChildNodes)
            {

                if (!this.NodeList.ContainsKey(GetName(xmlnode.Name)))
                {
                    if (xmlnode.Name == "#text")
                    {
                        this.XMLString = "";
                       
                    }
                    else
                    {
                        if (xmlnode.ParentNode != null)
                        {
                            XmlNodeList nlist = xmlnode.ParentNode.SelectNodes(SetXMLNamespace(xmlnode.Name), this.nsmgr);
                            if (nlist.Count == 1)
                            {
                                this.NodeList.Add(GetName(xmlnode.Name), GetAddChildElement(GetName(xmlnode.Name)));
                            }
                            else
                            {
                                this.NodeList.Add(GetName(xmlnode.Name), GetAddChildElement2(GetName(xmlnode.Name)));
                            }
                        }
                        else
                        {
                            this.NodeList.Add(GetName(xmlnode.Name), GetAddChildElement(GetName(xmlnode.Name)));
                        }
                    }
                }
            }
            if (this.ActXNode.ChildNodes.Count == 0)
            {
                this.XMLString = "";
            }
            foreach (string xml in this.NodeList.Values)
            {
                this.XMLString += xml;
            }
            return GetAddChildElementContainer();
        }
 
        public string GetAddChildElement(string ChildName)
        {
            string str = @" 
 
                    if (typeof(" + ChildName.Replace(":", "_") + @").IsInstanceOfType(childElement))
                    {
                        _" + ChildName.Replace(":", "_") + @" = (" + ChildName.Replace(":", "_") + @")childElement;
                    }";
            return str;
        }
        public string GetAddChildElement2(string ChildName)
        {
            string str = @" 
           
                    if (typeof(" + ChildName.Replace(":", "_") + @").IsInstanceOfType(childElement))
                    {
                       if (_" + GetName(ChildName) + @"Collection == null)
                        {
                            _" + GetName(ChildName) + @"Collection = new List<" + GetName(ChildName) + @">();
                        }
                        " + ChildName.Replace(":", "_") + @" _" + ChildName.Replace(":", "_") + @" = (" + ChildName.Replace(":", "_") + @")childElement;
                        _" + GetName(ChildName) + @"Collection.Add(_" + GetName(ChildName) + @");
                    }";
            return str;
        }
        public string GetAddChildElementContainer()
        {
              return @"public override void AddChildElement(XMLBase childElement)
                {
                    "+ this.XMLString +@"
                    this.AddChildElements(childElement);
                }";
        }
    }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -