ParseXSD.cs
using System;
using System.Collections;
using System.Xml;
using System.Xml.Schema;
class XmlSchemaTraverseExample
{
static void Main()
{
// Add the customer schema to a new XmlSchemaSet and compile it.
// Any schema validation warnings and errors encountered reading or
// compiling the schema are handled by the ValidationEventHandler delegate.
XmlSchemaSet schemaSet = new XmlSchemaSet();
schemaSet.ValidationEventHandler += new ValidationEventHandler(ValidationCallback);
schemaSet.Add("http://www.w3.org/2001/XMLSchema", "tmp.xsd");
schemaSet.Compile();
// Retrieve the compiled XmlSchema object from the XmlSchemaSet
// by iterating over the Schemas property.
XmlSchema customerSchema = null;
foreach (XmlSchema schema in schemaSet.Schemas())
{
customerSchema = schema;
}
// inserted more code here....
}
}
目前,我的ConsoleApp运行良好。
我想从下面的代码中删除硬代码(xsd文件路径)。
//我不知道如何更新这一行。
schemaSet.Add("http://www.w3.org/2001/XMLSchema", "tmp.xsd");
然后我可以在构建时使用下面的CSC命令运行我的 ParseXSD.cs 文件。
//我不知道正确的命令格式。我可以轻松更新路径参数。没有硬编码。
CSC ParseXSD.cs d:/tmp/tmp.xsd
请给我一些指导。提前谢谢。
答案 0 :(得分:2)
是否要在编译时或运行时指定它?
在运行时更改
static void Main()
到
static void Main(string[] args)
然后
schemaSet.Add("http://www.w3.org/2001/XMLSchema", args[0]);
如果要在编译时指定它,您可以使用预编译指令来执行此操作,但我不确定是否可以为csc指定它们。您的另一个选择是在使用命令行脚本或类似脚本编译之前进行注入。