我有一个XML文件(是用C#的XmlDocument创建的),现在我需要以编程方式创建相应的XSD文件...我该怎么做?? 我可以使用相同的类来创建XML文件吗?或者我应该使用其他与XSD相关的类吗?
xsd file.xml
以为该XML文件生成模式。/classes
参数即可。XSD仅是另一个XML类型的文件。无论您使用什么来创建XML文件,都可以用来创建XSD文件;您只需要知道要在文件中放置哪些标签/属性即可...
http://www.codeproject.com/Articles/133570/XmlToXsd-A-Better-Schema-Generator。
程序部分有两个错误。首先,它将XSD保存到可执行文件的根目录。不用担心,exe仅调用位于一个CS文件中的方法。只需在项目中包含该CS文件,并使用给定的行进行调用,只需将路径更改为与XML相同的文件夹即可。此外,作者使用了一个垃圾URL的targetnamespace。DevExpress会对不存在的URL提出抱怨。通过一些努力,我将目标URL替换为null。在随附的CS文件中,我必须进行一些更改。比我更理解的人可以修改到他/她的极限。我只是通过告诉别人我做了什么来帮助别人,所以没有静态反馈。是的,可以手动使用XSD.exe,但我需要一种编程方式进行转换。
原帖:
我有同样的问题,不一定是编程的。 XSD实用程序确实可以完成工作。 问题在于Microsoft没有将xsd.exe与Visual Studio 2012 Professional一起分发。 我搜索了硬盘并在Microsoft的SDK中找到了实用程序,在我的磁盘路径为“C:\ Program Files(x86)\ Microsoft SDKs \ Windows \ v7.0A \ Bin \ x64 \ xsd.exe”。
试试这个:
string xmlFilePath = @"myxmlfile.xml";
string xsdOutputPath = @"myxmlfile.xsd";
DataSet ds = new DataSet();
System.IO.FileStream fsReadXml = new System.IO.FileStream(xmlFilePath, System.IO.FileMode.Open);
ds.ReadXml(fsReadXml);
ds.WriteXmlSchema(xsdOutputPath);
如果来自xDocument:
DataSet ds = new DataSet();
ds.ReadXml(YourXDocument.CreateReader());
ds.WriteXmlSchema(xsdOutputPath);