以文本方式查看主题 - 中文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(); |
-- 作者: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 |