我尝试使用传统的XElement和XAttribute类从C#动态创建XML模式(XSD),但是使用冒号指定任何名称都无效。也就是说,我无法创建元素< xs:element>使用代码
... = new XElement("xs:element");
因为不允许“:”。
在C#中动态构建模式的正确方法是什么?
答案 0 :(得分:2)
要创建模式,您应该使用XmlSchema类。以下链接提供了以编程方式创建一个的综合示例:
http://msdn.microsoft.com/en-us/library/9ta3w88s.aspx
例如:
static void Main(string[] args)
{
var schema = new XmlSchema();
// <xs:element name="myElement" type="xs:string"/>
var myElement = new XmlSchemaElement();
schema.Items.Add(myElement);
elementCat.Name = "myElement";
elementCat.SchemaTypeName =
new XmlQualifiedName("string", "http://www.w3.org/2001/XMLSchema");
// writing it out to any stream
var nsmgr = new XmlNamespaceManager(new NameTable());
nsmgr.AddNamespace("xs", "http://www.w3.org/2001/XMLSchema");
schema.Write(Console.Out, nsmgr);
Console.ReadLine();
}
答案 1 :(得分:1)
创建新的XML元素时,您应该知道冒号前面的部分(在本例中为xs
)实际上是XML命名空间的别名(在XSD的情况下,{{1}通常是指xs
)。因此,要继续使用XDocument构建XSD,您可能希望使用:
http://www.w3.org/2001/XMLSchema
请参阅此处的示例: http://msdn.microsoft.com/en-us/library/bb292758.aspx
答案 2 :(得分:0)
我写了一篇关于这个主题的blog。您可以使用DataTable保存架构。
答案 3 :(得分:0)
如果要创建xml,则应使用XmlWriter类