[英]Create XSD from XML in Code
我正在使用MSDN
這段代碼從 XML 創建 XSD
XmlReader reader = XmlReader.Create("contosoBooks.xml");
XmlSchemaSet schemaSet = new XmlSchemaSet();
XmlSchemaInference schema = new XmlSchemaInference();
schemaSet = schema.InferSchema(reader);
foreach (XmlSchema s in schemaSet.Schemas())
{
textbox.text = s.ToString();
}
我想根據我的 xml 文件輸出 .xsd。 當我生成 .xsd 文件時,我得到的唯一內容是: System.Xml.Schema.XmlSchema
當我使用 Visual Studio 選項生成 XSD 以創建架構時,它會正確顯示。 但是,我有超過 150 個 xml 文檔需要創建 XSD,因此需要一個編程選項。 任何人都可以幫忙嗎?
xsd.exe
可以做你想做的:
如果指定 XML 文件(.xml 擴展名),Xsd.exe 將從文件中的數據推斷架構並生成 XSD 架構。 輸出文件與 XML 文件同名,但擴展名為 .xsd。
以下命令從 myFile.xml 生成 XML 架構並將其保存到指定目錄。
xsd myFile.xml /outputdir:myOutputDir
或者
您可以像這樣以編程方式嘗試:
XmlReader reader = XmlReader.Create(@"yourxml.xml");
XmlSchemaSet schemaSet = new XmlSchemaSet();
XmlSchemaInference schema = new XmlSchemaInference();
schemaSet = schema.InferSchema(reader);
foreach (XmlSchema s in schemaSet.Schemas())
{
using (var stringWriter = new StringWriter())
{
using (var writer = XmlWriter.Create(stringWriter))
{
s.Write(writer);
}
textbox.text = stringWriter.ToString();
}
}
這就是你所缺少的......而不是簡單地做s.ToString()
,這樣做:
XmlWriter writer;
int count = 0;
foreach (XmlSchema s in schemaSet.Schemas())
{
writer = XmlWriter.Create((count++).ToString() + "_contosobooks.xsd");
s.Write(writer);
writer.Close();
Console.WriteLine("Done " + count);
}
reader.Close();
然后,您可以編寫適當的邏輯來更優雅地進行讀/寫,讀取許多 xml 文件並創建相應的 xsd 文件等。
我從這里拿了 contosobooks.xml: https : //code.google.com/p/code4cs/source/browse/trunk/AppCase/dNet/Xml/data/contosoBooks.xml? spec = svn135 & r = 135
並且輸出 xsd 是:
<?xml version="1.0" encoding="utf-8"?>
<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" targetNamespace="http://www.contoso.com/books" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="bookstore">
<xs:complexType>
<xs:sequence>
<xs:element maxOccurs="unbounded" name="book">
<xs:complexType>
<xs:sequence>
<xs:element name="title" type="xs:string" />
<xs:element name="author">
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="0" name="name" type="xs:string" />
<xs:element minOccurs="0" name="first-name" type="xs:string" />
<xs:element minOccurs="0" name="last-name" type="xs:string" />
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="price" type="xs:decimal" />
</xs:sequence>
<xs:attribute name="genre" type="xs:string" use="required" />
<xs:attribute name="publicationdate" type="xs:date" use="required" />
<xs:attribute name="ISBN" type="xs:string" use="required" />
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
下載 microsoft visual studio 2010 或 2012.its 非常容易。 只需右鍵單擊 .xml 文件,然后選擇 microsft Visual Studio,然后您將看到 xml 選項卡,然后單擊 xml schema。 它將生成 xsd,將其保存到您的本地。
使用命令行工具xsd.exe
用法示例:
nameOf.xsd /c /n:yourNamespace /out:C:\\path\\to\\save
/c 參數創建一個類(與創建強類型數據集的 /dataset 相反)
您通常可以在以下位置找到它:C:\\Program Files (x86)\\Microsoft SDKs\\Windows\\v7.0A\\bin
然后使用批處理文件或 Powershell 創建所有 150 個類。
我使用這個命令行:
Administrator:Developer Command Prompt for VS2013
從 xml 創建 xsd 文件:
xsd FullFilePath.xml /outputdir:myOutputDir
生成對象來表示我們項目中的那個 xsd 文件。
xsd /c /n:myNameSpace FullPath\fileName.xsd
然后它會告訴在哪里創建 .cs 文件。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.