国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > .NET > 正文

ASP.NET技巧:根據xsd生成xml文檔

2024-07-10 13:09:20
字體:
來源:轉載
供稿:網友

現在有很多的xml工具軟件都能根據xsd文件書寫出xml文檔,.net 沒有實現此方法,如是我寫了幾個瀏覽、校驗、和創建xml的方法
全部代碼如下:


using system;
using system.data;
using system.configuration;
using system.web;
using system.web.security;
using system.web.ui;
using system.web.ui.webcontrols;
using system.web.ui.webcontrols.webparts;
using system.web.ui.htmlcontrols;
using system.xml;
using system.xml.schema;
using system.collections;


/**//// <summary>
/// proxml 的摘要說明
/// </summary>
public class proxml
{
    public proxml()
    {
        //
        // todo: 在此處添加構造函數邏輯
        //
    }
    /**//// <summary>
    /// 獲得xsd文件路徑
    /// </summary>
    public static string getschemapath
    {
           get{
               return httpcontext.current.request.physicalapplicationpath + "app_data//system//publish.xsd";
           }
    }
    /**//// <summary>
    /// 獲理節點
    /// </summary>
    /// <returns></returns>
    public static system.collections.generic.list<xmlschemaelement> getdatas()
    {
        xmlschemaset xsset = new xmlschemaset();
        xsset.add("http://www.w3.org/2001/xmlschema", getschemapath);
        xsset.compile();
        xmlschema schema = null;
        foreach (xmlschema xs in xsset.schemas())
        {
            schema = xs;
        }
        system.collections.generic.list<xmlschemaelement> elements=new system.collections.generic.list<xmlschemaelement> ();
        foreach (xmlschemaobject obj in schema.elements.values)
        {
            if (obj.gettype() == typeof(xmlschemaelement))
            {
                elements.add((xmlschemaelement)obj);
            }

        }
        return elements;
     
    }
    /**//// <summary>
    /// 添加元素
    /// </summary>
    /// <param name="sourcexsd"></param>
    /// <param name="titles"></param>
    /// <param name="sourcexml"></param>
    /// <param name="sourcend"></param>
    /// <param name="values"></param>
    public static   void addelement(xmlschemaobject sourcexsd, hashtable titles, xmldocument sourcexml, xmlnode sourcend, string[] values)
    {

        if (sourcexsd.gettype() == typeof(xmlschemachoice))
        {
            xmlschemachoice choice = sourcexsd as xmlschemachoice;
            decimal min = choice.minoccurs;
            foreach (xmlschemaobject item in choice.items)
            {
                if (item.gettype() == typeof(xmlschemaelement))
                {
                    string name = ((xmlschemaelement)item).name;
                    if (titles.containskey(name))
                    {
                        xmlelement element = sourcexml.createelement(name);
                       // element.innertext = ((excel.range)st.cells[rowindex, (int)titles[name]]).value2.tostring();
                        element.innertext = values[(int)titles[name]];
                        sourcend.appendchild(element);
                    }

                }
                else
                {
                    addelement (item, titles, sourcexml, sourcend, values);
                }

            }


        }
        else if (sourcexsd.gettype() == typeof(xmlschemaelement))
        {
            string name = ((xmlschemaelement)sourcexsd).name;
            if (titles.containskey(name))
            {
                xmlelement element = sourcexml.createelement(name);
                element.innertext = values[(int)titles[name]];
                sourcend.appendchild(element);
            }

        }
        else if (sourcexsd.gettype() == typeof(xmlschemasequence))
        {
            foreach (xmlschemaobject childitem in ((xmlschemasequence)sourcexsd).items)
            {
                if (childitem.gettype() == typeof(xmlschemaelement))
                {
                    string name = ((xmlschemaelement)childitem).name;
                    if (titles.containskey(name))
                    {
                        xmlelement element = sourcexml.createelement(name);
                        element.innertext = values[(int)titles[name]];
                        sourcend.appendchild(element);
                    }
                }
                else
                {
                    addelement(childitem, titles, sourcexml, sourcend, values);
                }

            }
        }
        else
        {
            return;
        }
    }
   /**//// <summary>
   /// 獲得元素
   /// </summary>
   /// <param name="name"></param>
   /// <returns></returns>
    public static system.collections.generic.list<xmlschemaelement> getdataitem(string name)
    {
        system.collections.generic.list<xmlschemaelement> arr = new system.collections.generic.list<xmlschemaelement>();
        xmlschemaelement element = gettableschema(name);
        if (element == null)
        {
            return null;
        }
        xmlschemacomplextype complex = element.schematype as xmlschemacomplextype;
        xmlschemasequence sequence = complex.contenttypeparticle as xmlschemasequence;
    
        foreach (xmlschemaobject obj in sequence.items)
        {
            if (obj.gettype() == typeof(xmlschemaelement))
            {
                xmlschemaelement item = (xmlschemaelement)obj;
                arr.add(item);
              
            }
            else
            {
                getitem(arr, obj);
            }
        }
        return arr;
    }
    public static void getitem(system.collections.generic.list<xmlschemaelement> arr, xmlschemaobject obj)
    {
        if (obj.gettype() == typeof(xmlschemaelement))
        {
            xmlschemaelement item = (xmlschemaelement)obj;
            arr.add(item);
        }
        else if (obj.gettype() == typeof(xmlschemachoice))
        {
            xmlschemachoice choice = obj as xmlschemachoice;
            foreach (xmlschemaobject child in choice.items)
            {
                if (child.gettype() == typeof(xmlschemaelement))
                {
                    xmlschemaelement item = child as xmlschemaelement;
                    arr.add(item);
                }
                else
                {
                    getitem(arr, child);
                }
            }
        }
        else if (obj.gettype() == typeof(xmlschemasequence))
        {
            xmlschemasequence sequence = obj as xmlschemasequence;
            foreach (xmlschemaobject child in sequence.items)
            {
                if (child.gettype() == typeof(xmlschemaobject))
                {
                    xmlschemaelement item = child as xmlschemaelement;
                    arr.add(item);
                }
                else
                {
                    getitem(arr, child);
                }
            }
        }
        else
        {
            return;
        }
    }
    /**//// <summary>
    /// 根據節點名獲得節點
    /// </summary>
    /// <param name="name"></param>
    /// <returns></returns>
    public static xmlschemaelement gettableschema(string name)
    {
        xmlschemaset xsset = new xmlschemaset();
        xsset.add("http://www.w3.org/2001/xmlschema", getschemapath);
        xsset.compile();
        xmlschema schema=null;
        foreach (xmlschema xs in xsset.schemas())
        {
            schema = xs;
        }
        xmlqualifiedname qf = new xmlqualifiedname(name, "http://www.w3.org/2001/xmlschema");
        if(schema.elements.contains(qf))
        {
            return (xmlschemaelement)schema.elements[qf];
        }
        return null;

    }
     static  void xmlvalidation(object sendor, validationeventargs e)
       {
           switch (e.severity)
           {
               case xmlseveritytype.error:
                   throw e.exception;

               case xmlseveritytype.warning:
                   throw e.exception;


           }

       }
  /**//// <summary>
  /// 校驗dom對象
  /// </summary>
  /// <param name="doc"></param>
  /// <returns></returns>
       public static string checkdataxml(xmldocument doc)
       {
           xmlschemaset xsd = new xmlschemaset();
           xsd.add("", getschemapath);
           doc.schemas = xsd;
           try
           {
               doc.validate(new validationeventhandler(xmlvalidation));
           }
           catch (exception ex)
           {
               return ex.message;
           }
           return null;
       }
}

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 壶关县| 汉阴县| 东平县| 永川市| 曲松县| 蓬安县| 棋牌| 宁津县| 二手房| 烟台市| 兴义市| 柳江县| 申扎县| 大竹县| 邵东县| 平舆县| 嵊州市| 梨树县| 株洲县| 扶沟县| 南华县| 惠东县| 赤水市| 铜山县| 上林县| 于都县| 财经| 丰原市| 宾阳县| 扎囊县| 侯马市| 大连市| 永春县| 桐乡市| 阜城县| 柳林县| 霍山县| 民县| 高州市| 定日县| 永州市|