0

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  

请给我一些指导。提前致谢。

4

1 回答 1

2

您想在编译时指定它还是在运行时指定它?

在运行时更改

static void Main()

static void Main(string[] args)

进而

schemaSet.Add("http://www.w3.org/2001/XMLSchema", args[0]);

如果您想在编译时指定它,您可能可以使用预编译指令来执行此操作,但我不确定是否可以为 csc 指定它们。您的另一个选择是在使用命令行脚本或类似脚本编译之前进行注入。

于 2009-12-16T06:42:53.500 回答