以文本方式查看主题

-  中文XML论坛 - 专业的XML技术讨论区  (http://bbs.xml.org.cn/index.asp)
--  『 DTD/XML Schema 』  (http://bbs.xml.org.cn/list.asp?boardid=23)
----  如何由xsd生成xml啊?  (http://bbs.xml.org.cn/dispbbs.asp?boardid=23&rootid=&id=20918)


--  作者:songlz
--  发布时间:8/5/2005 3:50:00 PM

--  如何由xsd生成xml啊?
看到介绍的都是怎么写xsd
我现在需要根据xsd生成几个xml的实例
有没有什么方法,根据xsd生成xml的格式,我再往里边填数据的方法?
谢谢
--  作者:johnrobbet
--  发布时间:8/9/2005 5:03:00 PM

--  
怎么没人回复阿,我觉得这个问题挺好的
我在看schema 的时候,手边没有xml文件,要是能够生成就好了
--  作者:lichugang
--  发布时间:8/11/2005 12:01:00 PM

--  
用编程实现吧,应该不会太难
类似于填表格
--  作者:coolbug
--  发布时间:8/23/2005 2:14:00 PM

--  
没有人去写这个工具么?
--  作者:coolbug
--  发布时间:8/23/2005 3:57:00 PM

--  
我已经写完了.
程序如下:
public static void GetNodes(XmlElement element)
  {
   if(element.ChildNodes.Count>0)
   {
    if(element.Name=="xs:element")
    {
     
     strFirst+="<"+element.Attributes["name"].InnerXml+">\n\r";
     strLast="</"+element.Attributes["name"].InnerXml+">\n\r"+strLast;
    }
    foreach(XmlElement elementC in element.ChildNodes)
    {
     GetNodes(elementC);
    }
    
   }
   else
   {
    strFirst+="<"+element.Attributes["name"].InnerXml+">\n\r";
    strFirst+="</"+element.Attributes["name"].InnerXml+">\n\r";
   }
  }

XmlDocument doc=new XmlDocument();
   doc.Load(@"e:\newfile\t.xsd");
   XmlNodeList list=doc.DocumentElement.ChildNodes;
   foreach(XmlElement el in list)
   {
    GetNodes(el); 
   }


--  作者:jackeyzsu
--  发布时间:8/24/2005 10:49:00 AM

--  
用XMLspy不可以嘛?
--  作者:coolbug
--  发布时间:8/25/2005 8:46:00 AM

--  
using System;
  2using System.IO;
  3using System.Xml;
  4
  5namespace RWXML
  6{
  7    /**//// <summary>
  8    /// TransXSD 的摘要说明。
  9    /// </summary>
10    public class TransXSD
11    {
12        public static string strFirst="<?xml version=\"1.0\" encoding=\"utf-8\" ?>\n\r";
13        public static string strLast="";
14        public static bool result=false;
15        public TransXSD()
16        {
17            //
18            // TODO: 在此处添加构造函数逻辑
19            //
20        }
21        /**//// <summary>
22        /// Check the childnodes if exist element "xs:element"
23        /// </summary>
24        /// <param name="node"></param>
25        /// <returns></returns>
26        public static bool CheckNode(XmlNode node)
27        {
28            foreach(XmlNode nodeC in node.ChildNodes)
29            {
30                if(nodeC.Name=="xs:element")
31                {
32                    result=true;
33                }
34                else
35                {
36                    if(nodeC.ChildNodes.Count>0)
37                    {
38                        CheckNode(nodeC);
39                    }
40                }
41            }
42            return result;
43        }
44        public static void InitialResult()
45        {
46            result=false;
47        }
48        /**//// <summary>
49        /// Get the xml text
50        /// </summary>
51        /// <param name="node"></param>
52        public static void GetNodes(XmlNode node)
53        {
54            if(node.HasChildNodes)
55            {
56                if(node.Name=="xs:element")
57                {
58                    if(CheckNode(node))
59                    {
60                        InitialResult();
61                        strFirst+="<"+node.Attributes["name"].InnerXml+">\n\r";
62                    }
63                    else
64                    {
65                        string temp1="";
66                        temp1+="<"+node.Attributes["name"].InnerXml+">"+"</"+node.Attributes["name"].InnerXml+">\n\r";
67                        strFirst+=temp1;
68                    }
69                    
70                }
71                if(CheckNode(node)==true)
72                {
73                    foreach(XmlNode nodeC in node.ChildNodes)
74                    {
75                        InitialResult();
76                        GetNodes(nodeC);
77                    }
78                    if(node.Name=="xs:element")
79                    {
80                        strFirst+="</"+node.Attributes["name"].InnerXml+">\n\r";
81                    }
82                }
83            }
84            else
85            {
86                if(node.Name=="xs:element")
87                {
88                    string temp1="";
89                    temp1+="<"+node.Attributes["name"].InnerXml+">"+"</"+node.Attributes["name"].InnerXml+">\n\r";
90                    strFirst+=temp1;
91                }
92            }
93        }
94        /**//// <summary>
95        /// Build the text for xml from *.xsd
96        /// </summary>
97        /// <param name="strXSD">The *.xsd file address</param>
98        /// <param name="strXML">The xml stord address</param>
99        public static void BuildTextandXML(string strXSD,string strXML)
100        {
101            BuildText(strXSD);
102            BuildXML(strXML);
103        }
104        public static void BuildText(string strXSD)
105        {
106            XmlDocument doc=new XmlDocument();
107            doc.Load(strXSD);
108            XmlNodeList list=doc.DocumentElement.ChildNodes;
109            foreach(XmlNode node in list)
110            {
111                GetNodes(node);
112            }
113        }
114        public static void BuildXML(string strXML)
115        {
116            StreamWriter sw=new StreamWriter(strXML);
117            try
118            {
119                sw.WriteLine(strFirst+strLast);
120            }
121            catch(Exception ex)
122            {
123                throw new Exception(ex.Message);
124            }
125            finally
126            {
127                sw.Close();
128            }
129        }
130    }
131}

W 3 C h i n a ( since 2003 ) 旗 下 站 点
苏ICP备05006046号《全国人大常委会关于维护互联网安全的决定》《计算机信息网络国际联网安全保护管理办法》
93.750ms