我有一個xml文件(我使用XmlDocument的在C#創建的),現在我要創建XSD文件的對應也C#編程的...我怎樣才能做到這一點? 我可以使用相同的類來創建xml文件嗎?或者是否還有其他(xsd相關的)我應該使用的類?如何以編程方式在C#中創建XSD文件?
回答
XSD只是另一種XML類型的文件。不管你用什麼來創建你的XML文件,對於創建XSD文件也是很有用的;你只需要知道你想放在文件中的標籤/屬性...
XSD代表* ahem * XML Schema Definition。那是什麼意思?這意味着它是用有效的XML編寫的。這意味着任何XML編寫者都應該能夠創建一個沒有問題的程序。 –
感謝您的回答... 這正是我所做的,但問題是,雖然我在XmlDocument CreateElement方法 – Shadi
@shady中編寫了xsd元素的前綴,但是如果您有代碼已經嘗試過,並且它不能正常工作,它可能有助於發佈相關的部分,所以我們可以幫助你 – psubsee2003
如果你只是想從一個XML文件中產生一個XSD文件,那麼你可以使用微軟的XSD.EXE,它包含在Visual Studio 。
要使用它,請打開Visual Studio命令提示符。然後輸入xsd file.xml
爲該XML文件生成模式。
您還可以使用該工具來生成類爲XML輸入,只是通過在/classes
參數。
在一個XML Schema文件是一個XML文件,它具有一定的東西,可以讓繁瑣的做「手」;人們可以說爲什麼使用DOM API編寫XML而不是使用由XSD.exe或XSD2Code.exe生成的C#類?或者推動它有點類似於有人說C#語句最終會變成IL程序集;爲什麼不寫IL呢?
另一個替代方案由Schema Object Model API提供;在.NET中,它是System.Xml.Schema命名空間。
看一看的code example found here on MSDN。它會給你一個另一種方法的想法。它提供了一個編程友好的API來生成XSD,而不是處理實際的XML。
解決方案: 我最初發布的答覆,但堆棧溢出而編輯我的反應,所以這裏是編輯。我建議的原始工具是另一種方式。然後我做了一些研究,並且有人推薦了一種名爲MyGenerations或類似的工具。這需要安裝,下載模板和工作,因此太複雜了。然後我做了一些更多的研究,並在CodePage上找到了一個非常漂亮的解決方案,但是那個解決方案很有效,因爲我測試了它,需要進行一些修改。該代碼被稱爲XmlToXsd與網址:
http://www.codeproject.com/Articles/133570/XmlToXsd-A-Better-Schema-Generator。
程序部分有兩個錯誤。首先它將XSD保存到可執行文件的根目錄。別擔心,exe只會調用位於一個CS文件中的方法。只需將該CS文件包含在您的項目中並使用給定的行進行調用,只需將路徑更改爲與XML相同的文件夾即可。此外,作者使用垃圾URL的目標名稱空間。 DevExpress在不存在的URL上投訴。通過一些努力,我用null替換了目標URL。在隨附的CS文件中,我不得不做一些更改。其他人比我更能理解他/她的心意。我只是通過告訴他們我做了什麼來幫助別人,所以沒有回頭路。
更改1:之前「target = XNamespace.Get(targetNamespace);」添加一個if語句,如果目標名稱空間不爲空,則只加載if語句。
更改2:我爲返回添加了另一個if語句。 null返回,原始返回的副本修改如下:
2.1:刪除targetnamespace屬性項。 2.2:替換呼叫後,添加另一個替換呼叫「。更換( 「的xmlns = \」 空\ 「」,NULL))」 2.3:迴歸之前,需要添加括號,設定目標= 「空」
生成的文件現在看起來完全有效和編程創建。
是的,人們可以使用XSD.EXE但手動,但我需要談話的程序化的方式
原貼: 我有同樣的問題,不一定是編程的XSD工具可以完成任務。 。問題是,微軟沒有在Visual Studio 2012 Professional上分發xsd.exe,我搜索了我的硬盤,並在微軟的SDK中找到了該實用程序,我的磁盤上的路徑爲「C:\ Program Fi les(x86)\ Microsoft SDKs \ Windows \ v7.0A \ Bin \ x64 \ xsd.exe「。
我不得不轉到XML文件所在的文件夾,並從命令框(不是在Visual Studio中)執行XSD實用程序並清除XSD文件。
以編程方式完成此任務的一種方法是從代碼調用XSD,但這意味着分發XSD。
我發現這個組件,但從來沒有用過它可能做這項工作。退房:http://xsd2code.codeplex.com/
試試這個:
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);
- 1. 以編程方式在C#中創建KMZ文件KML文件
- 2. 以編程方式從XSD創建XML文件
- 3. 以C#編程方式從數據庫創建XSD
- 4. 以編程方式在C++中創建Excel文件
- 5. 在Objective-C中以編程方式創建.pem文件?
- 6. 如何以編程方式在iphone中創建csv文件?
- 7. 如何在c/C++中以編程方式創建軟鏈接?
- 8. 以編程方式創建ZIP文件
- 9. 以編程方式創建.pfx文件
- 10. 以編程方式創建.edmx文件
- 11. 以編程方式創建.xls文件
- 12. 以編程方式創建designer.cs文件
- 13. 使用XSD以編程方式創建XML文檔
- 14. 以編程方式在特定文件夾中創建文件
- 15. 如何以編程方式在Google文檔中創建文檔?
- 16. 如何以編程方式在C#中創建字符串?
- 17. 如何以編程方式在c#中創建數據集?
- 18. 如何以編程方式在C#中創建MS Access表?
- 19. 如何在linux中創建快照 - 以編程方式C++
- 20. 如何在iOS上以編程方式創建.txt文件
- 21. 如何以編程方式在Sharepoint站點創建文件夾
- 22. 從XSD文件中以編程方式創建特定的XML元素
- 23. C#以編程方式創建報表
- 24. C#以編程方式創建資源
- 25. 如何以編程方式創建UIButton
- 26. 如何以編程方式創建GPO?
- 27. 如何以編程方式創建JPEG
- 28. 如何以編程方式創建DrawerLayout
- 29. 如何以編程方式創建NSPopover
- 30. 如何以編程方式創建SplitView?
應當指出的是,一個XML文檔沒有必要的元數據來構建描述的XSD文件。您的XML文檔是XSD還是您希望使用XSD描述/定義的文檔? –
這是一個想用XSD文件描述的XML文檔 – Shadi